Win32汇编之使用资源--菜单和加速键

本文深入探讨了如何在Win32汇编语言中创建和管理资源,特别是菜单和加速键的使用。通过实例,详细解释了在应用程序中添加、响应菜单事件以及处理加速键的方法,帮助开发者更好地理解和掌握Win32 API在汇编程序中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

///我们在使用软件时可以看到菜单、图标、版本信息等,它们是可执行文件的组成
   部分也是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 
  
这只是一个简单的总结,我会在以后进行更加完善的补充。(宇)         



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值