Win32汇编之使用资源--菜单和加速键
2014-08-10 19:45
344 查看
///我们在使用软件时可以看到菜单、图标、版本信息等,它们是可执行文件的组成
部分也是Windows中的不同类型的资源。这些资源并不在源码的数据段中定义,
而是单独放在一个节区中,需要这些资源时必须借助API装入方可使用。///
使用资源-菜单和加速菜单
创建资源脚本文件menu.rc
因为在resource.h文件中包括了资源的预定义值,所以将resource.h文件包含到脚本文件头部方便使用。
将资源的引用(资源ID)用#define语句定义为便于记忆的字符串。
一、创建菜单
编写一个菜单栏需要两个步骤:
1、定义菜单
菜单ID MENU [discardable]
BEGIN
......
END
菜单ID用来指定菜单的ID值,[discardable]指定内存属性
2、定义菜单项目
用法1--定义普通菜单:
MENUITEM 菜单文字,命令ID,[选项列表]
用法2--菜单项间具有分隔线
MENUITEM SEPARATOR
用法3--弹出式菜单
POPUP 菜单文字,[选项列表]
BEGIN
......
END
二、加速键的定义
加速键ID ACCELERATORS
BEGIN
键名,命令ID[,类型][,选项]
......
END
注:a.同类型的多个资源,资源的ID必须不同
b.不同类型的资源ID可以相同
三、使用菜单和加速键
在完成资源的编写后需要将其加载到窗口中才能成为实现菜单中的功能。
加载方法有两个:1.在注册窗口类的时候指定默认菜单。2.建立窗口时指定菜单句柄。
1、加载菜单
对于这两种加载方法来说,首先使用LoadMenu函数来获取菜单句柄hMenu。
方法:
invoke LoadMenu,hInstance,IDM_MAIN
mov hMenu,eax
2、加载加速键
方法:invoke LoadAccelerators,hInstance,IDA_MAIN
mov @hAccelerator,eax
3、分析菜单和加速键的消息
当用户选择了菜单项或按下加速键时,Windows向窗口发送WM_COMMAND消息。
消息的参数定义是:
wParam的高位:wNotifyCode //通知码(菜单是0,加速键是1)
wParam的低位:wID //命令ID
IParam:hwndCtl // 发送WM_COMMAND的子窗口句柄
此分支的一般结构。
4、修改菜单项
相关函数有:AppendMenu用来在一个菜单的最后添加菜单选项,InsertMenu
在中间插入菜单项,ModifyMenu可以修改一个菜单项的文字,DleteMenu 和
RemoveMenu则可以删除一个菜单项。
5、使用系统菜单
系统菜单指的是按下标题栏中的图标后弹出的菜单,选中后,Windows向窗口
发送的是WM_SYSCOMMAND消息。系统菜单默认的有 还原、移动、关闭等菜单
项。在程序中WM_SYSCOMMAND消息一般交给DefWindowProc处理而非程序本身
利用AppendMenu可以在系统菜单中添加自己的菜单项。
6、右键弹出菜单
利用TrackPopupMenu函数实现右键弹出菜单。
用法:
invoke TrackPopupMenu,hMenu,uFlags,x,y,nReserved,hWnd,IpRect
这只是一个简单的总结,我会在以后进行更加完善的补充。(宇)
部分也是Windows中的不同类型的资源。这些资源并不在源码的数据段中定义,
而是单独放在一个节区中,需要这些资源时必须借助API装入方可使用。///
使用资源-菜单和加速菜单
创建资源脚本文件menu.rc
因为在resource.h文件中包括了资源的预定义值,所以将resource.h文件包含到脚本文件头部方便使用。
将资源的引用(资源ID)用#define语句定义为便于记忆的字符串。
一、创建菜单
编写一个菜单栏需要两个步骤:
1、定义菜单
菜单ID MENU [discardable]
BEGIN
......
END
菜单ID用来指定菜单的ID值,[discardable]指定内存属性
2、定义菜单项目
用法1--定义普通菜单:
MENUITEM 菜单文字,命令ID,[选项列表]
用法2--菜单项间具有分隔线
MENUITEM SEPARATOR
用法3--弹出式菜单
POPUP 菜单文字,[选项列表]
BEGIN
......
END
二、加速键的定义
加速键ID ACCELERATORS
BEGIN
键名,命令ID[,类型][,选项]
......
END
注:a.同类型的多个资源,资源的ID必须不同
b.不同类型的资源ID可以相同
三、使用菜单和加速键
在完成资源的编写后需要将其加载到窗口中才能成为实现菜单中的功能。
加载方法有两个:1.在注册窗口类的时候指定默认菜单。2.建立窗口时指定菜单句柄。
1、加载菜单
对于这两种加载方法来说,首先使用LoadMenu函数来获取菜单句柄hMenu。
方法:
invoke LoadMenu,hInstance,IDM_MAIN
mov hMenu,eax
2、加载加速键
方法:invoke LoadAccelerators,hInstance,IDA_MAIN
mov @hAccelerator,eax
3、分析菜单和加速键的消息
当用户选择了菜单项或按下加速键时,Windows向窗口发送WM_COMMAND消息。
消息的参数定义是:
wParam的高位:wNotifyCode //通知码(菜单是0,加速键是1)
wParam的低位:wID //命令ID
IParam:hwndCtl // 发送WM_COMMAND的子窗口句柄
此分支的一般结构。
4、修改菜单项
相关函数有:AppendMenu用来在一个菜单的最后添加菜单选项,InsertMenu
在中间插入菜单项,ModifyMenu可以修改一个菜单项的文字,DleteMenu 和
RemoveMenu则可以删除一个菜单项。
5、使用系统菜单
系统菜单指的是按下标题栏中的图标后弹出的菜单,选中后,Windows向窗口
发送的是WM_SYSCOMMAND消息。系统菜单默认的有 还原、移动、关闭等菜单
项。在程序中WM_SYSCOMMAND消息一般交给DefWindowProc处理而非程序本身
利用AppendMenu可以在系统菜单中添加自己的菜单项。
6、右键弹出菜单
利用TrackPopupMenu函数实现右键弹出菜单。
用法:
invoke TrackPopupMenu,hMenu,uFlags,x,y,nReserved,hWnd,IpRect
这只是一个简单的总结,我会在以后进行更加完善的补充。(宇)
相关文章推荐
- Win32汇编--使用资源--菜单和加速键
- Win32学习笔记——菜单和加速键资源的使用
- Win32汇编教程五 菜单和加速键的使用
- Win32汇编--如何使用资源 [菜单和加速键]
- Win32汇编教程五:菜单和加速键的使用
- Win32汇编教程五 菜单和加速键的使用
- Win32汇编教程5-菜单和加速键的使用
- Win32汇编教程五 菜单和加速键的使用
- Win32汇编--菜单进阶之不使用资源创建菜单
- WIN32汇编 菜单和加速键的使用
- Windows程序设计学习笔记(五)——菜单资源和加速键的使用
- Win32汇编教程三 一个简单的对话框 --- 兼谈资源文件的使用
- Win32的加速键与鼠标,系统菜单,资源加载
- Win32汇编教程三:一个简单的对话框 --- 兼谈资源文件的使用
- Win32汇编--加载菜单资源
- Win32汇编教程三 一个简单的对话框 --- 兼谈资源文件的使用
- 汇编语言学习笔记-使用菜单资源
- 如何在Smartphone的Win32程序中使用Windows的通用菜单资源(MENU而不是SHMENUBAR)
- Win32汇编--使用资源—版本信息资源
- Win32汇编--使用资源--对话框--在对话框中使用子窗口控件(2)