- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章--MFC教程
最终,ClassWizard自动生成一个缺省的函数OnUpdateEditClearAll,在MiniDDoc.h中的定义中加入了该函数的声明: afx_msg void OnUpdateEditClearAll(CCmdUI* pCmdUI); 在MiniDDoc.cpp中的消息映射表中有下列映射和该函数的骨架 ON_UPDATE_COMMAND_UI(ID_EDIT_CLEAR_ALL, OnUpdateEditClearAll) 往这个函数内添加如下代码: void CMINIDRAWDoc::OnUpdateEditClearAll(CCmdUI* pCmdUI) { pCmdUI-Enable(mObArray.GetSize()); } void CMINIDRAWDoc::OnUpdateEditUndo(CCmdUI* pCmdUI) { pCmdUI-Enable(mObArray.GetSize()); } 三、动态改变菜单 1、CMenu类 提供了大量的成员函数来动态改变菜单,如建立、跟踪、更新和删除等操作,见表 2、获得菜单的指针 通过调用CWnd类中的CMenu* GetMenu( )函数来得到与某窗口相关联的菜单指针,通过GetSubMenu( int nPos )来得到某个弹出式菜单的指针,参数nPos指定了主菜单中该弹出式菜单的位置,第一个弹出式菜单的位置为0 ,依次类推。 3、使菜单项有效、无效和变灰 通过函数 UINT CMenu::EnableMenuItem( UINT nIDEnableItem, UINT nEnable ) 函数名 作用 AppendMenu 追加菜单项到菜单末尾 CheckMenuItem 增加或删除菜单项选择记号 CreateMenu 创建一空菜单 CreatePopupMenu 创建空弹出式菜单 DeleteMemu 删除菜单内的项。若该项是弹出式菜单,弹 出式菜单被置为无效,含有该菜单的内存被 释放 DestoryMenu 销毁释放了曾由其占据的所有内存的菜单 EnableMenuItem 使一菜单项有效、无效或变灰 GetMenuItemCount 得到菜单内的项数 GetMenuItemID 得到菜单的ID值 GetMenuState 得到菜单项的状态标志 GetSubMenu 得到弹出式菜单句柄 InsertMenu 在菜单内的指定位置插入项 ModifyMenu 修改菜单内的项 RemoveMenu 从菜单中删除一弹出式菜单项但不使该弹出 式菜单无效或释放含有该菜单的内存区域 SetMenu 给窗口设定菜单 可以改变某一菜单项的状态。参数nIDEnableItem指定要选择的菜单项,它是按菜单ID值标识(例如IDM_EDIT_UNDO)或按位置标识(0表示第一个菜单或菜单项);参数nEnable指出要进行上述哪一种寻址方式以及要执行什么操作,它是下面两组中各选一个标志通过OR操作符得到的,MF_DISABLED, MF_ENABLED(缺省)或MF_GRAYED 和 MF_BYCOMMAND(缺省)或 MF_BYPOSITION。如下所示 MF_BYCOMMAND 通过菜单ID值指定菜单项 MF_BYPOSITION 通过以0为基数的位置指定菜单项 MF_DISABLED 禁止菜单项,它不能被选择,但其不变灰 MF_ENABLED 使菜单项有效,若原先是灰化显示,则变为正常显示 MF_GRAYED 灰化并禁止菜单项 4、菜单项的选中与未选中 通过在菜单项的旁边放置或删除选择标记的方法也可以改变现有菜单的外观。在一个典型的应用中,常把许多互不相容的项组在一起,并在用户最后一次选中项的旁边放置选择标记。如果选择组内的另一项,则应当使上次选中的项未被选中并选中新的选择项。 要选中或未选中已有菜单项,可调用函数 UINT CheckMenuItem( UINT nIDCheckItem, UINT nCheck ) ; 参数nCheck指出到底使用哪一种寻址方式以及要执行什么操作,它是下面两组中各选一个标志通过OR操作符得到的,MF_UNCHECKED(缺省)或MF_CHECKED和 MF_BYCOMMAND(缺省)或 MF_BYPOSITION。如下所示。 MF_CHECKED 选择菜单项 MF_UNCHECKED 删除选择标记 使用这一函数时有两条小小的限制,不能用它来选择顶层菜单,只能选中或未选中弹出菜单中的菜单项或弹出菜单。由于弹出菜单没有菜单ID,所以必须按位置指定要选择的弹出菜单。 可以这样来选择Undo菜单项: SubMenu-CheckMe
文档评论(0)