欢迎来到天天文库
浏览记录
ID:37060757
大小:151.50 KB
页数:10页
时间:2019-05-16
《菜单工具栏状态栏(精品)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、菜单、工具栏和状态栏一、菜单1.新建一个单文档SDI工程1MiniCAD,在原菜单右侧添加“绘图”子菜单:菜单项名热键加速键(快捷键)状态栏提示工具栏图标提示普通模式(&M)tCtrl+M退出绘图模式普通模式画线(&L)tCtrl+L进入画线模式画线实现上述菜单功能。2.菜单消息传递顺序:View类àDoc类àCMainFrame类àApp类。菜单消息一旦在其中一个类中响应,则不再在其它类中查找响应函数。在上述菜单的”选择颜色”下方添加一个Test项进行测试。3.概念:菜单栏、菜单、子菜单、菜单项、分隔条(Separator)菜单栏从左到右是从0
2、开始的索引,菜单项由上至下也是从0开始的索引,访问子菜单和菜单项均通过其索引或标识ID进行。在计算菜单项的索引的时候,分隔栏Separator也要计算在内。相关重要函数:CMenu*GetMenu();//得到窗口菜单栏对象指针。CMenu*GetSubMenu(4);/获得指向弹出菜单对象指针UINTCheckMenuItem();//在菜单项前面打勾BOOLSetDefaultItem();//使菜单项变粗变黑UINTEnableMenuItem();//使菜单项有效,无效,或变灰。BOOLSetMenuItemBitmaps();//设置位图菜单。BO
3、OLSetMenu(CMenu*pMenu);//在当前窗口上设置新菜单或移除菜单。HMENUDetach();//解除捆绑示例:a.在CMiniCADView::OnCreate()中,使菜单项“普通模式”成为打勾状态:GetParent()->GetMenu()->GetSubMenu(4)->CheckMenuItem(ID_DRAW_NONE,MF_BYCOMMAND
4、MF_CHECKED);b.在CMainFrame::OnCreate()中,使菜单项“普通模式”成为默认菜单:m_bAutoMenuEnable=FALSE;GetMenu()->G
5、etSubMenu(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
6、)->EnableMenuItem(6,MF_BYPOSITION
7、MF_DISABLED
8、MF_GRAYED);d.在CMainFrame::OnCreate()中,给SaveAs菜单项增加图标:CStringstr;str.Format("x=%d,y=%d",GetSystemMetrics(SM_CXMENUCHECK),GetSystemMetrics(SM_CYMENUCHECK));MessageBox(str);CBitmapbitmap;bitmap.LoadBitmap(IDB_BITMAP1);GetMenu()->GetSubMenu
9、(0)->SetMenuItemBitmaps(3,MF_BYPOSITION,&bitmap,&bitmap);bitmap.Detach();//使HBITMAP和CBitmap解除捆绑,否则会使SetMenuItemBitmaps失效。说明:intGetSystemMetrics()获取系统信息度量。可以用它来获取菜单标题的尺寸从而设置位图标题菜单中位图的大小。e.在CMainFrame::OnCreate()中,移除/增加菜单CMenu*pMenu=this->GetMenu();this->SetMenu(NULL);//移除菜单this->Set
10、Menu(pMenu);//增加菜单1.在资源管理器中设置加速键。然后在CApp类的InitInstance()中加载快捷键,使定义的Ctrl+M等起作用:HACCELhAccelTable=LoadAccelerators(theApp.m_hInstance,MAKEINTRESOURCE(IDR_MAINFRAME));2.使用TrackPopupMenu函数,添加右键弹出菜单:1)用资源管理器添加一个菜单资源,也可以利用主菜单中的某个子菜单作为要弹出的菜单。2)在鼠标右键消息响应函数中,加载菜单资源,并获得要显示的子菜单指针,并用该指针调用Track
11、PopupMenu函数便完成任务(但要注意:鼠标响应
此文档下载收益归作者所有