MFC-菜单编程.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
菜单结构 一个菜单拦可以有若干个子菜单,一个子菜单又可以有若干个菜单项等。对菜单栏的子菜单由左至右建立从0开始的索引。对特定子菜单的菜单项由上至下建立了从0开始的索引。访问子菜单和菜单项均可以通过其索引或标识(如果有标识的话)进行 。 右键弹出的菜单中,如果弹出菜单归属view类窗口,则菜单项只能响应view类和doc类消息点击;如果弹出菜单属于框架窗口的时候(可在TrackPopupMenu函数参数中设置),弹出菜单上的消息,在路由的时候,仍然遵循View -DOC-MainFrame-APP的响应顺序 MFC中菜单项消息如果利用ClassWizard来对菜单项消息分别在上述四个类中进行响应,则菜单消息传递顺序:View类--Doc类 --CMainFrame类--App类 。菜单消息一旦在其中一个类中响应则不再在其它类中查找响应函数 截断菜单消息路由: 可以在frame类中添加虚函数oncommand(wParame,)其中wPareme的低字节保存了菜单的ID,可以根据ID判断有用的消息来处理,处理完后加上return true;这样就截断了此ID的消息路由,其他菜单的消息路由正常 菜单的相关重要函数 1.CMenu* GetMenu( ) ;// 得到菜单指针 2.CMenu* GetSubMenu( ) ;// 得到子菜单指针,也就是弹出菜单指针 3.UINT CheckMenuItem( );// 将菜单项加上或去掉√(对号)标记 a.如果第一个参数是ID号,第二个参数必须是MF_BYCOMMAND | MF_CHECKED的组合 b.如果第一个参数是索引号,第二个参数必须是MF_BYPOSITION | MF_CHECKED的组合 4. BOOL SetDefaultItem();// 设置缺省菜单,也就是将菜单项粗体显示 a.如果第一个参数是索引号,第二个参数必须是true b.如果第一个参数是ID号,第二个参数必须是false * 注 :一个子菜单最多只能有一个缺省菜单项 5. BOOL SetMenuItemBitmaps( );// 设置位图标记,标记大小为13*13像素 a.如果第一个参数是ID号,第二个参数必须是MF_BYCOMMAND b.如果第一个参数是索引号,第二个参数必须是MF_BYPOSITION 第三个参数是没有选中时的位图;第四个参数是标记时的位图 6. UINT EnableMenuItem();//使菜单项有效,无效,或变灰 a.如果第一个参数是ID号,第二个参数必须是MF_BYCOMMAND 和有效,无效,或变灰 的组合 b.如果第一个参数是索引号,第二个参数必须是MF_BYPOSITION 和有效,无效,或变灰 的组合 * 注 :若让此函数生效,必须在mainfrm构造函数中添加:m_bAutoMenuEnable =false;此时,其他变灰的菜单项也就恢复为不变灰状态了,会有副作用的 7. BOOL SetMenu( CMenu* pMenu );//在当前窗口上设置新菜单或移除菜单。 如果参数为0,则是移除菜单。 自己创建菜单{CMenu menu;menu.LoadMenu(IDR_MENU1);SetMenu(menu);menu.Detach();} 8. HMENU Detach( );// 如果将CMenu 对象设置为局部对象,使用Detach()从menu对象中分离窗口菜单句柄,从而当menu对象析构的时候窗口菜单资源不随之销毁 菜单的相关操作的实现方法 (在Cmainfrme中的OnCreate函数里初始化) a.添加对号标记: 方法一:GetMenu()-GetSubMenu(0)-CheckMenuItem(0,MF_BYPOSITION | MF_CHECKED );//通过索引 方法二:GetMenu()-GetSubMenu(0)-CheckMenuItem(ID_FILE_NEW,MF_BYCOMMAND | MF_CHECKED );//通过ID b.设置缺省菜单项:每个子菜单最多只能有一个缺省菜单项 方法一:GetMenu()-GetSubMenu(0)-SetDefaultItem(1,true);//通过索引 方法二:GetMenu( )-GetSubMenu(0)-SetDefaultItem(ID_FILE_OPEN,false);//通过ID c.添加图形标记: 方法一:通过ID CBitmap bitmap;//必须设置为全局对象 bitmap.LoadBitmap(IDB_BITMAP1); GetMenu( )-GetSubMenu(0)-SetMenuItemBitmaps(ID_FILE_NEW,MF_

文档评论(0)

海川电子书城 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档