欢迎来到天天文库
浏览记录
ID:12710538
大小:36.50 KB
页数:5页
时间:2018-07-18
《孙鑫vc 讲座笔记-(6)菜单编程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、孙鑫VC++讲座笔记-(6)菜单编程分类:VisualC++发布时间:2007-04-1106:55:09来源:技术文档大全孙鑫VC++讲座笔记-(6)菜单编程1,弹出菜单(Pop-up)是不能用来作命令响应的。2,MFC中菜单项消息如果利用ClassWizard来对菜单项消息分别在上述四个类中进行响应,则菜单消息传递顺序:View类--Doc类--CMainFrame类--App类。菜单消息一旦在其中一个类中响应则不再在其它类中查找响应函数。具体:当点击一个菜单项的时候,最先接受到菜单项消息的是CMainFram
2、e框架类,CMainFrame框架类将会把菜单项消息交给它的子窗口View类,由View类首先进行处理;如果View类检测到没对该菜单项消息做响应,则View类把菜单项消息交由文档类Doc类进行处理;如果Doc类检测到Doc类中也没对该菜单项消息做响应,则Doc类又把该菜单项消息交还给View类,由View类再交还给CMainFrame类处理。如果CMainFrame类查看到CMainFrame类中也没对该消息做响应,则最终交给App类进行处理。3,消息的分类:标准消息,命令消息,通告消息。[标准消息]:除WM_C
3、OMMAND之外,所有以WM_开头的消息。[命令消息]:来自菜单、加速键或工具栏按钮的消息。这类消息都以WM_COMMAND呈现。在MFC中,通过菜单项的标识(ID)来区分不同的命令消息;在SDK中,通过消息的wParam参数识别。[通告消息]:由控件产生的消息,例如,按钮的单击,列表框的选择等均产生此类消息,为的是向其父窗口(通常是对话框)通知事件的发生。这类消息也是以WM_COMMAND形式呈现。说明:1)从CWnd派生的类,都可以接收到[标准消息]。2)从CCmdTarget派生的类,都可以接收到[命令消息]
4、和[通告消息]。4,一个菜单拦可以有若干个子菜单,一个子菜单又可以有若干个菜单项等。对菜单栏的子菜单由左至右建立从0开始的索引。对特定子菜单的菜单项由上至下建立了从0开始的索引。访问子菜单和菜单项均可以通过其索引或标识(如果有标识的话)进行。相关重要函数:CMenu*GetMenu();//CWnd::GetMenu得到窗口菜单栏对象指针。CMenu*GetSubMenu();//CMenu::GetSubMenu获得指向弹出菜单对象指针UINTCheckMenuItem();//CMenu::CheckMenuI
5、temAddscheckmarkstoorremovescheckmarksfrommenuitemsinthepop-upmenu.BOOLSetDefaultItem();//CMenu::SetDefaultItemSetsthedefaultmenuitemforthespecifiedmenu.BOOLSetMenuItemBitmaps();//CMenu::SetMenuItemBitmaps设置位图标题菜单。UINTEnableMenuItem();//CMenu::EnableMenuItem使菜
6、单项有效,无效,或变灰。BOOLSetMenu(CMenu*pMenu);//CWnd::SetMenu在当前窗口上设置新菜单或移除菜单。HMENUDetach();//CMenu::DetachDetachesaWindowsmenufromaCMenuobjectandreturnsthehandle.说明:1)在计算子菜单菜单项的索引的时候,分隔栏符也算索引的。2)intGetSystemMetrics()获取系统信息度量。可以用它来获取菜单标题的尺寸从而设置位图标题菜单中位图的大小。3)在MFC中MFC为我
7、们提供了一套命令更新机制,所有菜单项的更新都是由这套机制来完成的。所以要想利用CMenu::EnableMenuItem来自己控制菜单使用或不使用变灰等,必须要在CMainFrame的构造函数中将变量m_bAutoMenuEnable设置为FALSE。4)CreateaCMenuobjectonthestackframeasalocal,thencallCMenu’smemberfunctionstomanipulatethenewmenuasneeded.Next,callCWnd::SetMenutosetth
8、emenutoawindow,followedimmediatelybyacalltotheCMenuobject’sDetachmemberfunction.TheCWnd::SetMenumemberfunctionsetsthewindow’smenutothenewmenu,causesthewindowtoberedrawntoreflectthe
此文档下载收益归作者所有