您的位置:首页 > 编程语言 > C语言/C++

VC++2008菜单的应用1

2010-08-04 00:41 197 查看
1、菜单的制作菜单的制作一般有两种方法一是利用VC++的资源编辑器制作。新建MFC工程后进入资源视图,然后再资源视图中点击鼠标右键后选择添加资源。接着选中menu后点击添加,这样一个菜单的创建就完成。剩下来的工作就是添加菜单项了。在添加过程中设置菜单项ID以便操作。另外一个就是直接编写RC文件了。通过文本编辑器打开RC文件,然后进行编辑。示例如下IDR_MAINFRAMEMENU//创建菜单,菜单ID为IDR_MAINFRAME BEGIN POPUP"文件(&F)"//创建弹出菜单菜单名称为文件,快捷键为ATL+F BEGIN MENUITEM"新建(&N)\tCtrl+N",ID_FILE_NEW//创建菜单项,ID为ID_FILE_NEW,快捷键为Ctrl+N MENUITEM"打开(&O)...\tCtrl+O",ID_FILE_OPEN MENUITEM"保存(&S)\tCtrl+S",ID_FILE_SAVE MENUITEM"另存为(&A)...",ID_FILE_SAVE_AS MENUITEMSEPARATOR//创建菜单中的分割线 MENUITEM"打印(&P)...\tCtrl+P",ID_FILE_PRINT MENUITEM"打印预览(&V)",ID_FILE_PRINT_PREVIEW MENUITEM"打印设置(&R)...",ID_FILE_PRINT_SETUP MENUITEMSEPARATOR MENUITEM"最近的文件",ID_FILE_MRU_FILE1,GRAYED//创建一个不可用的菜单,菜单中显示为灰色。 MENUITEMSEPARATOR MENUITEM"退出(&X)",ID_APP_EXIT END END2、菜单命令的路由在MFC向导创建的4个类,既APP,DOC,VIEW,FRAME。首先有框架类FRAME收到消息并立即把这个消息传递给VIEW视类,如果视类中存在该消息的响应,则响应该消息,消息路由就到此结束了。如果视类中不存在该消息的响应,则把消息递交给DOC文档类,若文档类处理了改消息,则结束消息路由。若未处理,则递交给视类,视类再将消息递交给框架类处理。归纳一下消息路由过程为:MESSAGE->FRAME->VIEW->DOC->VIEW->FRAME(均未处理的情况)。
3、菜单的基本操作(1)获取菜单指针通过CMenu*GetMenu()const;函数可以获取到菜单指针。但是该函数在VC++2008MFC创建的BCGControlBar菜单栏中获取到的值始终为NULL,原因是BCGControlBar的菜单工具栏代替了标准工具栏,所以GetMenu失效。解决办法暂无~。(2)标记菜单通过UINTCheckMenuItem(UINTnIDCheckItem,UNITnCheck)进行操作nIDCheckItem的值可以是菜单项ID,也可以是菜单项的位置。通过nCheck来确定。nCheck的值可以是以下的值或组合  MF_CHECKED:命令旁显示默认复选标志  MF_UNCHECKED:清除命令旁的复选标志MF_BYPOSITION:菜单位置标志MF_BYCOMMAND:菜单ID标志(3)设置默认菜单SetDefaultItem(UINTuItem,BOOLfByPos=FALSE);uItem:当fByPos=FALSE时为菜单项位置,为TRUE时为菜单ID;(4)设置位图标题菜单BOOLSetMenuItemBitmaps();//CMenu::SetMenuItemBitmaps。(5)使菜单项有效,无效,或变灰  UINTEnableMenuItem();//CMenu::EnableMenuItem(6)在当前窗口上设置新菜单或移除菜单  BOOLSetMenu(CMenu*pMenu);//CWnd::SetMenu在当前窗口上设置新菜单或移除菜单。SetMenu(NULL)移除菜单(7)分离菜单与CMenu并返回菜单句柄。  HMENUDetach();(8)  获取菜单的宽和高:  GetSystemMetrics(SM_CXMENUCHECK)//获取宽  GetSystemMetrics(SM_CYMENUCHECK)//获取高
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐
章节导航