欢迎来到天天文库
浏览记录
ID:38699107
大小:253.50 KB
页数:7页
时间:2019-06-17
《实验四 菜单、工具栏》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、菜单、工具栏实验报告2011年4月6日一、实验目的1、掌握菜单的实现机制和创建过程2、掌握普通下拉菜单和上下文菜单的创建3、掌握工具栏的创建和消息处理过程二、实验内容本节主要掌握菜单、工具栏的使用方法,内容包括菜单的创建和使用、工具栏的创建和使用。例1.要求创建一个应用程序,实现在客户区绘制椭圆和矩形的功能。为应用程序添加一个“图形”菜单项,该菜单项包含两个子菜单“椭圆”和“矩形”。步骤:(1)用AppWizard创建一个基于MFC的SDI应用程序,工程名为ex61。(2)在ResourceView页面中,双击Menu文件夹,可以看到一个ID为I
2、D_MAINFRAME的菜单,此菜单为应用程序的主菜单。双击ID_MAINFRAME菜单,进入菜单编辑器,在编辑框窗口中出现菜单栏。(3)菜单项的添加:1)“图形”菜单项的添加。在ID_MAINFRAME菜单的最右端有一个空的菜单项,双击该菜单项弹出该菜单项的属性对话框,在该对话框中,选定弹出(pop-up),表示本菜单项中包含弹出子菜单,在标明(caption)编辑框中输入该菜单项的标题“图形”,使该菜单项下产生一个空的子菜单项。2)添加“椭圆”和“矩形”子菜单项。双击“图形”菜单项下的空子菜单,其属性对话框中各项为:(4)增加“椭圆”和“矩形
3、”的消息处理……1)利用ClassWizard为ID_ELLIPSE在CEx61View类中添加消息映射,如下图。双击COMMAND弹出对话框,要求在该对话框中输入消息处理函数的名称,选择默认函数名,确定后,双击消息处理函数OnEllipse进行编辑(矩形同样进行编辑,消息处理函数为OnRectangle),代码如下:voidCEx61View::OnEllipse()//椭圆画图{//TODO:AddyourcommandhandlercodehereInvalidate();UpdateWindow();CDC*pDC=GetDC();pDC
4、->Ellipse(100,100,200,200);}voidCEx61View::OnRectangle()//矩形画图{//TODO:AddyourcommandhandlercodehereInvalidate();UpdateWindow();CDC*pDC=GetDC();pDC->Rectangle(100,100,200,200);}(1)给“椭圆”和“矩形”子菜单添加UPDATE_COMMAND_UI消息,并在消息处理函数中实现在选中的子菜单项前打钩。UPDATE_COMMAND_UI消息的添加和WM_COMMAND消息类似。在
5、上图中,在Messages中选择UPDATE_COMMAND_UI即可。消息处理函数为:VoidCE61View::OnUpdateEllipse(CCmdUI*pCmdUI){pCmdUI->SetCheck(flag==0);}VoidCE61View::OnUpdateRectangle(CCmdUI*pCmdUI){pCmdUI->SetCheck(flag==1);}例1.用上下文菜单实现例1的功能。创建上下文菜单的步骤如下:(1)创建一个新菜单资源。用AppWizard创建一个基于MFC的SDI应用程序,工程名为ex62。在工作区的R
6、esourceView选项卡中,右击Menu文件夹,在弹出菜单中选择插入菜单便可创建一个新的菜单资源,其ID为IDR_MENU1。右击IDR_MENU1,在弹出菜单中选择属性,修改其ID为IDR_POPMENU。双击IDR_POPMENU资源进入编辑对话框,对弹出式菜单进行编辑,方法见例1,完成后的菜单资源如图:(2)添加代码,实现鼠标右键单击时显示弹出式菜单。在查看菜单项中选择建立类向导来添加右键单击弹出式菜单WM_CONTEXTMENU及消息处理函数,这时MFC会发现创建了一个新资源,将询问是否创建一个新类,取消后,弹出下图对话框,选择ID为
7、CEx62View,Messages为WM_CONTEXTMENU,双击该消息或单击AddFunction按钮,将为该消息添加默认处理函数,单击EditCode按钮进入OnContextMenu()函数,对其进行编辑。在相应的消息处理函数中添加代码如下:voidCEx62View::OnContextMenu(CWnd*pWnd,CPointpoint){//TODO:AddyourmessagehandlercodehereCMenumenu;menu.LoadMenu(IDR_POPMENU);menu.GetSubMenu(0)->Trac
8、kPopupMenu(TPM_LEFTALIGN
9、TPM_LEFTBUTTON,point.x,point.y,AfxGetMainWn
此文档下载收益归作者所有