好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

VC第14讲级联菜单与分隔条.docx

14页
  • 卖家[上传人]:亦***
  • 文档编号:274596560
  • 上传时间:2022-04-08
  • 文档格式:DOCX
  • 文档大小:591.11KB
  • / 14 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 第14讲级联菜单与分隔条14.1级联菜单第13讲中已经提出了 VC技术集成的概念,定义了:VCTI1: SDP1{画图(直线,矩形,CMainFrame); }(2)VCTI2: VCTI1{鼠标画图(直线,矩形,CProView); )(3)并且实现了 VC技术集成VCTI2o现在在VCT12的基础上进一步集成例14.1(VC技术集成VCTI3):在VC技术集成VCT12的基础上添加二级菜单“鼠标 画图.线型”,但这个“线型”不是叶菜单,而是径菜单在径菜单”鼠标画图.线型”之下添 加三个子菜单如图0所示:图工程运行后,先选择“实线”,再单击“百线”,当鼠标在客户区的A点按下拖动到B 力:释放时,以实线画出线段AB如果先选择“实线”,再单击“矩形”,当鼠标在客户区的 C点按下拖动到D点齐放时,那么实线画出矩形rect(C,D)类似的,如果选择“虚线”或点 线,那么以相应的线条画出图形(直线或矩形)一、翻开VC技术集成VCTI2的菜单编辑器(如图1)图1二、添加二级径菜单名称“鼠标画图.线型”右击,属性,有如卜属性对话框:选中图1中菜单“矩形”下边的空格菜单匚二□单击 AddFunction 有相继单击OK,EditCode,进入函数OnUpdateMouseLine ()的编辑区并加如下代码:void CProl Vicw::OnUpdatcMouscLinc(CCnidUI* pCmdUI) (// TODO: Add your command update UI handler code here pCmdUI->Se(Check(m_nLCheck);5运行。

      单击菜单“鼠标画图.直线”有如下结果:知识点:1 UI即User Interface (用户界面)的简称2 CCmdUIeMFC,用户界面命令类CCmdUI提供了对菜单进行处理的很多函数,它只用 fF. OnUpdateMouseLine ()函数中,而且 OnUpdaleMouseLine (CCmdUI* pCmdUI)的参数提 供了 CCmdUI类的指针pCmdULSctCheck()eCmdUL 其原型为Virtual void SetCheck(int m_nLCheck);其功能是在菜单上加上或取消复选标记当m_nLChcck=l时,加上复选标记;当 m_nLCheck=O时,取消复选标记4步骤3为IDM_MOUSE_LINE添加更新函数OnUpdateMouseLine ()的过程等价于如下代 码的添加:// pro 1 View.h : interface of the CProl View class//{{AFX_MSG(CPro 1 View) afx_msg void OnUpdatcMouseLinc (CCmdUI* pCmdUI);//}}AFX_MSGDECLARE_MESSAGE_MAP()// pro 1 View.cpp : implementation of the CProl View class void CProl View:: OnUpdateMouseLine (CCmdUI* pCmdUI) {// TODO: Add your command update UI handler code here pCmdUI->SetCheck(m_nLCheck); (1))BEGIN_MESSAGE_MAP(CProIView, CView) //{{AFX_MSG_MAP(CPro 1 View)ON_UPDATE_COMMAND_UI(IDM_MOUSE_LINE, OnUpdateMouseLine) //}}AFX_MSG_MAPEND_MESSAGE_MAP()5工程prol运行过程中,各个母类要创立对象并运行有关函数⑴CMainFrame::OnCreate()函数要运行。

      运行结果使得菜单“鼠标画图.直线”上加上了复选 标记2)CProlView的对象被创立并被初始化这个初始化过程中m_nLCheck被置为0 CProl View:: OnUpdateMouseLine (CCmdUI* pCmdUI)要运行,运行结果使得菜单”鼠标画图. 直线”没有复选标记之后,CProl View:: OnUpdateMouseLine (CCmdUI* pCmdUI)的击活由 “单击鼠标画图.直线”事件来驱动函数 CProl View:: OnUpdateMouseLine (CCmdUI* pCmdUI)在类 CPro 1 View 的对象被创 建并被初始化的过程中要被运行,这一点可以这样来证实:在构造函数里将变量m_nLCheck 的初始化值设为1,当工程运行后菜单”鼠标画图.直线”上可看到复选标记6在VCTI4基础上加成例14.4与 例14.5的成果定义VCTI5如下:VCTI5: VCTI4{(菜单”画图.直线”上恒出现一个复选标记);(单击菜单“鼠标画图.直线”时其上出现一个复选标记);}(5)7工程prol (VC技术集成VCTI5)运行后,单击菜单''鼠标画图.直线”时,函数CProl View:: OnMouscLinc ():CPro I View::OnUpda(eMouseLine();均被击活。

      首先是OnMouseLine运行,结果是选择了画直线,且使得m_nLCheck=l ;而后 OnUpda【eMouseLine()运行,使得菜单“鼠标画图.直线”上加上了复选标记8更新用户界面命令消息映射VC++有更新用户界面机制,由更新用户界面映射宏ON_UPDATE_COMMAND_UI来 建立起菜单IDM_MOUSEJJNE与更新函数OnUpdateMouseLine的关联:ON_UPDNTE_COMMAND_UI(IDM_ MOUSE_LINE, OnUpdateMouseLine)例14.5(VC技术集成VCTI6)继VCTI5,修改其程序,使得工程运行后,“做标画图” 各子菜单上均无复选标记单击菜单”鼠标画图.直线”时其上出现复选标记;单击菜单“鼠 标画图.矩形”时其上添加复选标记,“鼠标画图.直线”上的复选标记取消;再次单击菜单“鼠 标画图.直线”时其上出现复选标记“鼠标画图.矩形”上的复选标记取消1在类CProl View中添加变量并初始化// pro 1 View.h : interface of the CProl View classclass CPro 1 View : public CVicw private:int m_nRCheck;)// prol V沁 w.cpp : implementation of the CPro I View class CPro 1 View::CPro 1 View() m_nRCheck=O;2在OnMouseRecl。

      函数中添加语句:void CProl View:: OnMouseRect (){// TODO: Add your command handler code herem_nLCheck= 1; m_nRChcck=O;)改OnMouseLine函数中代码为: void CProl View:: OnMouseLine()// TODO: Add your command handler code herem_nLChcck=O;m_nRCheck=l;为IDM_MOUSE_RECT添加更新函数Ctrl+w, MessagwMap» 取值MessagwM叩(Project=pro l,ClassName= CPro 1 View, ObjectIDs= IDM_MOUSE _RECT,Massage= UPDATE_COMMAND_UI)单击 AddFunction 有Member function name:Member function name:Add Member FunctionouseRedMessage: UPDATE_COMMAND_UIObject ID: IDM_MOUSE_RECT相继单击OK,EdiiCode,进入函数OnUpdaleMouseRect ()的编辑区并加如下代码: void CPro 1 View::OnUpdateMouseRect(CCmdUI* pCmdUI)(// TODO: Acid your command update UI handler code here pCmdUI->SctChcck(m_nRChcck);}5运行。

      其结果如题例14.5之要求所述知识点I VCTI6的定义如下:VCTI6: VCTI5{(单击“鼠标画图”上一叶菜单其上出现及选标记,其它子菜单上复选标记取消);) 2程序设计思路:VC技术集成VCTI6中有2个变量m_nLCheck与m_nRCheck,它们分别表示“鼠标画 图.直线”与“鼠标画图.矩形”的复选标记情况还有2个界面更新函OnUpdaleMouseLine 与OnUpdateMouseRect它们的功能是更新界面只要界面一处有所改变,类中的所有更 新函数都要自动运行数函数OnMouseLine被击活后,被置m_nLCheck=l, m_nRCheck=O, 同时导致OnUpdateMouseLine函数运行,结果是菜单“鼠标画图.直线”上出现了一个复选 标记这一处界面的改变导致了 OnUpdateMouseRectO函数也运行,其结果使得原来“鼠标 画图.矩形”上的复选标记被取消;函数OnMouseRectO被击活时,被置 m_nLCheck=O,(LincChcck); m_nRCheck=l, (RectanglcCheck)o 同时导致 OnUpdateMouseRectO 函数运行,结果使“鼠标画图.矩形”上出现复选标记。

      这一处界面的改变,使 OnUpdateMouseLineO函数也运行,运行结果使菜单“鼠标画图.直线”上的复选标记被取消14.4调用对话框例14.6(VC技术集成VCTI7)继VCTI6,添加子菜单”鼠标画图.颜色”当单击菜单 “鼠标画图.颜色”时,翻开颜色对话框1添加“鼠标画图.颜色”菜单(IDM_COLOR,颜色)2为IDM_COLOR建响应函数OnColorCtrl+w, MessagwMap,取值MessagwMap(Project=pro 1 ,ClassName= CProlView, ObjectIDs= IDM_COLOR, Massage=COMMAND)单击 AddFunction 有Add Member Function| 宵 II由WMember function name:CancelMessage: COMMANDObject ID: IDM_COLOR相继单击:OK, EidtCode,进入响应函数OnColorO编辑区,并加如下代码:void CProl View::OnColor() |// TODO: Add your command handler code here CColorDialog dlgC; 〃定义颜色对话类的对象 dlgC.DoModal();〃调用并显示颜色的模式对话框3运行,单击子菜单“鼠标画图.颜色”有如下结果:知识点1 VCTI7的定义如下:VCTI7: VCTI6{“鼠标画图(IDM_COLOR,颜色,CProlView);单击“鼠标画图.颜色”时翻开颜色对话框:} 2 DoModal。

      成员函数用来显示一个模式对话框。

      点击阅读更多内容
      相关文档
      云南省红河州河口县语文二年级下学期期末试题+2020-2021学年.pdf 八年级生物开学摸底考(人教版)(答题卡).pdf 云南省文山州砚山县数学四年级下学期期末试题 2020-2021学年 (2).pdf 八年级生物开学摸底考(辽宁专用)(答题卡).pdf 八年级生物开学摸底考(海南专用)(答题卡).pdf 云南省昆明市五华区数学四年级第二学期期末考试 2020-2021学年.pdf 八年级生物开学摸底考(南京专用)(答题卡).pdf 八年级生物开学摸底考(湖南专用)(答题卡).pdf 云南省德宏州语文五年级下学期期末试题 2020-2021学年答案zq.pdf 八年级生物开学摸底考(武汉专用)(答题卡).pdf 2022年盐城市中考化学试卷答案.pdf 云南省德宏州语文四年级下学期期末试题 2020-2021学年.pdf 云南省德宏州数学四年级下学期期末试题 2020-2021学年.pdf 云南省德宏州数学五年级下学期期末试题 2020-2021学年数学答案zq.pdf 八年级生物开学摸底考(福建专用)(答题卡).pdf 八年级生物开学摸底考(全国通用)(答题卡).pdf 八年级生物开学摸底考(广西专用)(答题卡).pdf 八年级生物开学摸底考(广州专用)(答题卡).pdf 云南省昆明市盘龙区数学四年级第二学期期末考试 2020-2021学年.pdf 云南省昆明市盘龙区语文二年级第二学期期末考试 2020-2021学年(人教部编版无答案PDF).pdf
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.