菜单工具栏状态栏.docVIP

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
菜单、工具栏和状态栏 一、菜单 新建一个单文档SDI工程1MiniCAD,在原菜单右侧添加“绘图”子菜单: 菜单项名 热键 加速键(快捷键) 状态栏提示 工具栏图标提示 普通模式 (M) \t Ctrl+M 退出绘图模式 \n普通模式 画线 (L) \t Ctrl+L 进入画线模式 \n画线 实现上述菜单功能。 菜单消息传递顺序:View类(Doc类(CMainFrame类(App类。菜单消息一旦在其中一个类中响应,则不再在其它类中查找响应函数。在上述菜单的”选择颜色”下方添加一个Test项进行测试。 概念:菜单栏、菜单、子菜单、菜单项、分隔条(Separator) 菜单栏从左到右是从0开始的索引,菜单项由上至下也是从0开始的索引,访问子菜单和菜单项均通过其索引或标识ID进行。在计算菜单项的索引的时候,分隔栏Separator也要计算在内。 相关重要函数: CMenu* GetMenu() ; //得到窗口菜单栏对象指针。 CMenu* GetSubMenu(4) ;/获得指向弹出菜单对象指针 UINT CheckMenuItem(); //在菜单项前面打勾 BOOL SetDefaultItem(); //使菜单项变粗变黑 UINT EnableMenuItem();//使菜单项有效,无效,或变灰。 BOOL SetMenuItemBitmaps( );//设置位图菜单。 BOOL SetMenu( CMenu* pMenu );//在当前窗口上设置新菜单或移除菜单。 HMENU Detach( ); //解除捆绑 示例: a. 在CMiniCADView::OnCreate()中,使菜单项“普通模式”成为打勾状态: GetParent()-GetMenu()-GetSubMenu(4)- CheckMenuItem(ID_DRAW_NONE, MF_BYCOMMAND | MF_CHECKED); b. 在CMainFrame::OnCreate()中,使菜单项“普通模式”成为默认菜单: m_bAutoMenuEnable = FALSE; GetMenu()-GetSubMenu(4)-SetDefaultItem(ID_DRAW_NONE); c. 在CMainFrame::OnCreate()中,使菜单项“打印预览”变成灰色,不可用状态: //禁止“打印预览”菜单项: //EnableMenuItem()需要将CFrameWnd::m_bAutomenuEnable设置为FALSE, //如果该数据成员为TRUE(缺省值),工作框将自动地禁止没有实现 //ON_COMMAND或者ON_UPDATE_COMMAND_UI的菜单项。 m_bAutoMenuEnable = FALSE; GetMenu()-GetSubMenu(0)-EnableMenuItem(6, MF_BYPOSITION | MF_DISABLED | MF_GRAYED); d. 在CMainFrame::OnCreate()中,给Save As菜单项增加图标: CString str; str.Format(x=%d,y=%d, GetSystemMetrics(SM_CXMENUCHECK), GetSystemMetrics(SM_CYMENUCHECK)); MessageBox(str); CBitmap bitmap; bitmap.LoadBitmap(IDB_BITMAP1); GetMenu()-GetSubMenu(0)-SetMenuItemBitmaps(3, MF_BYPOSITION, bitmap, bitmap); bitmap.Detach(); //使HBITMAP和CBitmap解除捆绑,否则会使SetMenuItemBitmaps失效。 说明:int GetSystemMetrics()获取系统信息度量。可以用它来获取菜单标题的尺寸从而设置位图标题菜单中位图的大小。 e. 在CMainFrame::OnCreate()中,移除/增加菜单 CMenu *pMenu = this-GetMenu(); this-SetMenu(NULL); //移除菜单 this-SetMenu(pMenu); //增加菜单 在资源管理器中设置加速键。然后在CApp类的InitInstance()中加载快捷键,使定义的Ctrl+M等起作用:HACCEL hAccelTable = LoadAccelerators(theApp.m_hInstance, MAKEINTRESOURCE(IDR_MAINFRAME)); 使用TrackPopupMenu函数,添加右键弹

文档评论(0)

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

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

1亿VIP精品文档

相关文档