MFC菜单1

 创建加载菜单有三种方式:

1*在Cwnd::Create方法中传递菜单资源的ID,

2*在CFrameWnd的LoadFrame中传递菜单资源的ID,这时经常与其它资源共享资源ID.

3*是通过编程方式利用CMenu这个类,动态创建菜单。或者与菜单资源结合使用。

    例:CMenu menu;
            menu.LoadMenu(IDR_**);
            ::SetMenu(&menu);
           ::DrawMenuBar();
            menu.detach();-------当menu为局部变量时
        或者利用CreateMenu/appendMenu的方式动态创建。
 注意当程序中有多个菜单时,只能用Cmenu的方式。
---------------------------------------
菜单处理程序有两种,一种是命令处理程序----WM_COMMAND,一种是命令更新程序(即菜单反映程序状态,与一些含有菜单的状态值有关),当发生WM_INITPOPUPMENU时由主框架调用。消息影射宏有:
            ON_COMMAND/ON_UPDATE_COMMAND_UI/ON_COMMAND_RANGE/ON_UPDATE_COMMAND_UI_Range
_______________________
键盘加速键也作为一种资源,可以令ID与菜单ID相同,从而共享命令处理程序。
也可以单独创建键盘加速键处理程序。
值得注意的是:
  CFrameWnd为我们处理了键盘加速的基础工作。
  如果我们直接继承自CWnd则需要我们在应用程序的初始化时,利用::LoadAccelerator()加载加速表资源,返回句柄付给窗口的成员 HACCEL m_hAccel;然后重写Cwnd虚函数,BOOL PreTranslateMessage(MSG *pmsg)。
在这个函数里调用BOOL ::TranslateAccelerator()来进行键盘加速消息的预先处理。注意这个函数的调用发生在
消息循环中TranslateMessage之前,专门用于转换产生键盘加速消息(WM_COMMAND),如果有键盘加速消息
,就会跳过TranslateMessage,进入下一轮消息循环。
-----一切工作都是由AFx在起作用。
*********************************************

 

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值