- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MFC中菜单各函数的用法
消息的分类
标准消息
除WM_COMMAND之外,所有以WM_开头的消息。
从CWnd派生的类,都可以接收到这类消息。
命令消息
来自菜单、加速键或工具栏按钮的消息。这类消息都以WM_COMMAND呈现。在MFC中,通过菜单项的标识(ID)来区分不同的命令消息;在SDK中,通过消息的wParam参数识别。
从CCmdTarget派生的类,都可以接收到这类消息。
通告消息
由控件产生的消息,例如,按钮的单击,列表框的选择等均产生此类消息,为的是向其父窗口(通常是对话框)通知事件的发生。这类消息也是以WM_COMMAND形式呈现。
从CCmdTarget派生的类,都可以接收到这类消息。
命令消息的路由:
注意:通常消息产生时,MFC在后台将窗口过程函数替换为了AfxWndProc(可参考MFC源代码),AfxWndProc函数会调用AfxCallWndProc函数,AfxCallWndProc函数又会调用WindowPro函数,WindowPro函数是CWnd的成员函数,接下来WindowPro函数会调用OnWndMsg函数???OnWndMsg函数会判断消息类型,是标准消息则交由CWnd类处理;是命令消息则交由OnCommand函数处理;是通告消息则交由OnNotify函数处理。最后OnCommand和OnNotify函数都会调用OnCmdMsg函数来进行处理。OnCommand函数会完成命令消息的路由,路由过程:首先消息由CMainFrame交给它的子窗口类CView,如果类中有消息响应函数则响应,否则会转而交给CDoc类处理,如果CDoc类也没有消息响应函数,则CDoc类会将消息交还给CView类,继而交还给CMainFrame类,如果CMainFrame类中也没有消息响应函数,则消息最后由CWndApp类响应。
对菜单编程时,首先要找到菜单,然后找到子菜单,最后才是菜单项。
CWnd::GetMenu函数
函数原型:CMenu* GetMenu( ) const;
CMenu类封装了与菜单相关的操作。利用这个函数就可以返回一个隶属于CWnd的菜单指针。
CMenu:: GetSubMenu函数
函数原型:CMenu* GetSubMenu( int nPos ) const;
int nPos
菜单序号。第一个子菜单的序号是0,该函数返回一个菜单的子菜单指针
CMenu::CheckMenuItem
该函数可以设置标记菜单(即菜单项前打勾)
函数原型:UINT CheckMenuItem( UINT nIDCheckItem, UINT nCheck );
UINT nIDCheckItem
指示要被标记的菜单项,其取值的含义由第二个参数决定
UINT nCheck
如果该参数取值为:MF_BYCOMMAND,那么第一个参数要按菜单项的ID号取值;如果该参数取值为:MF_BYPOSITION?,那么第一个参数要按菜单项的索引号取值(从0开始);当然第二个参数取值需要是MF_BYPOSITION 或 MF_BYCOMMAND的其中一个和MF_BYCOMMAND或MF_BYPOSITION的其中一个的位或(|)的组合。
CMenu::SetDefaultItem
该函数设置一个菜单项为缺省菜单项(菜单项会粗体显示)
函数原型:BOOL SetDefaultItem( UINT uItem, BOOL fByPos = FALSE );
UINT uItem
该参数的含义由第二个参数决定。如果fByPos值为FALSE,该参数按照菜单项的ID号取值,否则按菜单项的索引取值。
BOOL fByPos = FALSE
该参数用来决定uItem参数的含义
注意: 1、当按照索引访问菜单项的时候,分隔符也要计算在内!
2、一个子菜单中只能有一个缺省菜单
8、CMenu::SetMenuItemBitmaps
该函数设置一个图形标记菜单
函数原型:BOOL SetMenuItemBitmaps( UINT nPosition, UINT nFlags, const CBitmap* pBmpUnchecked, const CBitmap* pBmpChecked );
UINT nPosition
该参数含义由第二个参数决定
UINT nFlags
该参数决定第一个参数的取值。如果该参数取值为:MF_BYCOMMAND,那么第一个参数要按菜单项的ID号取值;如果该参数取值为:MF_BYPOSITION?,那么第一个参数要按菜单项的索引号取值(从0开始)
const CBitmap* pBmpUnchecked
菜单项没有被选中时,需要设置的菜单项的位图指针
const CBitmap* pBmp
您可能关注的文档
- C++实验6.doc
- C++链表的创建与操作.doc
- C++例题库.doc
- CAD六角螺栓动态块实例.doc
- cat命令.doc
- C++二元非线性方程组.docx
- CAE分析报告流程.doc
- 555课程项目参考报告.doc
- CAXA电子图板作图及步骤.doc
- CCTV6电影频道佳片有约1998-2014.docx
- 数学冀教版二年级下册《参观爱国教育基地》说课课件.ppt
- 统编版历史八年级上册第七单元 人民解放战争 大单元教学设计.pdf
- 人教版小学数学四年级下册第八单元《平均数与条形统计图》 单元教学设计(表格式).pdf
- 《口算两位数加减法》说课课件冀教版二年级下册数学.ppt
- 人教版四年级数学下册第九单元《数学广角——鸡兔同笼》 单元教学设计(表格式).pdf
- 牛津深圳版英语八年级上册Unit 8 English Week 单元整体教学设计.pdf
- 北师大版小学数学六年级下册3.2《图形的旋转(二)》说课课件.ppt
- 二年级下册冀教版第六单元《解决问题》说课.ppt
- 人教版九年级化学上册全册教学设计教案.pdf
- 人教版四年级数学下册第二单元《观察物体(二)》 单元教学设计(表格式).pdf
文档评论(0)