MFC菜单1
来源:互联网 发布:天猫店和淘宝店的费用 编辑:程序博客网 时间:2024/05/23 14:48
创建加载菜单有三种方式:
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在起作用。
*********************************************
- MFC菜单1
- MFC菜单(1)
- MFC 菜单
- mfc菜单
- MFC 菜单
- MFC菜单
- mfc菜单
- MFC菜单
- MFC:菜单
- MFC菜单
- 1、MFC调用windows右键菜单
- 弹出菜单(MFC)
- MFC菜单2
- MFC菜单3
- MFC 实现上下文菜单
- MFC 使菜单项变灰
- 孙鑫MFC 6.菜单
- MFC笔记(2)菜单
- 毕业生干外包(三)
- 四个主流的Native-XML数据库
- “/”应用程序中的服务器错误。当前标识(NT AUTHORITY/NETWORK SERVICE)没有对“C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files”的写访问权
- 超级方便的Ajax控件-MagicAjax
- 新开了个Blog,欢迎光临
- MFC菜单1
- 寻得一个 Windows XP Professional With SP2 VOL CHS 下载地址
- ip的划分,超详细.[经典]
- IBM C编译器bug
- 4.15
- 深入分析 Linux 内核链表
- 在Tomcat下JSP、Servlet和JavaBean环境的配置(初学必掌握的哦)
- 通过编程简单地将XML文档数据导入到SQL Server数据库中
- 下拉日期控件(来自小山)