MFC中菜单各函数的用法.docx

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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

文档评论(0)

2017ll + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档