第章多文档界面程序.ppt
- 文档编号:2123383
- 上传时间:2022-10-27
- 格式:PPT
- 页数:23
- 大小:60.50KB
第章多文档界面程序.ppt
《第章多文档界面程序.ppt》由会员分享,可在线阅读,更多相关《第章多文档界面程序.ppt(23页珍藏版)》请在冰豆网上搜索。
VisualC+与面向对象程序设计教程与面向对象程序设计教程第第16章章多文档界面程序多文档界面程序计算机教学实验中心计算机教学实验中心计算机教学实验中心计算机教学实验中心西安交通大学西安交通大学西安交通大学西安交通大学教学目标教学目标n多文档界面(多文档界面(MDI)程序的构造和编程方法)程序的构造和编程方法学习要求学习要求n理解多文档界面(理解多文档界面(MDI)程序的构造、主要类)程序的构造、主要类n掌握多文档界面(掌握多文档界面(MDI)编程方法)编程方法授授课课内内容容n16.1MDI应用程序应用程序n16.2滚动视图滚动视图n调试技术调试技术n程序设计举例程序设计举例16.1MDI应用程序应用程序nMDI应用程序必须有一个应用程序必须有一个CMDIFrameWnd或其派或其派生类的对象,该窗口称作生类的对象,该窗口称作MDI框架窗口框架窗口nMDI子窗口是子窗口是CMDIChildWnd或其派生类对象或其派生类对象AppWizard为为MDI程序框架创建了以下类程序框架创建了以下类类类说说明明CAboutDlg“关于关于”对话框对话框CChildFrame子框架窗口用于容纳视图子框架窗口用于容纳视图CMyApp应用程序类应用程序类CMyDoc文档类文档类CMyView视图类视图类CMainFrame框架窗口框架窗口(用来容纳子窗用来容纳子窗口),是口),是MDI应用程序的主窗口应用程序的主窗口例例16-1绘图程序绘图程序n用户可以鼠标用户可以鼠标“拖曳拖曳”方式在视图中画直线段,方式在视图中画直线段,线的粗细和颜色可调。
线的粗细和颜色可调。
n采用采用MDI结构,可同时打开多个子窗口作图结构,可同时打开多个子窗口作图n所作图形可以文件形式保存在磁盘上所作图形可以文件形式保存在磁盘上文件扩展名(程序生成时设定)文件扩展名(程序生成时设定)n用用AppWizard生生成成一一个个MDI程程序序框框架架,在在第第4步步打打开开AdvancedOptions(高高级级选选项项)对对话话框框,在在DocumentTemplateStrings(文文档档模模板板字字符符串串)选选项项卡卡中中将将Fileextension(文文件件扩扩展展名名)设设置置为为“pic”,即该程序的图形文件名后缀为即该程序的图形文件名后缀为“.pic”。
主菜单设置主菜单设置IDCaption命令消息响应函数命令消息响应函数=ID_COLOR“颜色颜色”OnColor()()ID_WIDTH1“宽度宽度1”OnWidth1()()ID_WIDTH3“宽度宽度3”OnWidth3()()ID_WIDTH5“宽度宽度5”OnWidth5()()ID_WIDTH7“宽度宽度7”OnWidth7()()描述线段的类描述线段的类(数据成员)(数据成员)classCLine:
publicCObjectpublic:
CPointm_pointFrom;/线段起点线段起点CPointm_pointTo;/线段终点线段终点COLORREFm_colorLine;/线段颜色线段颜色intm_nWidth;/线段宽度线段宽度描述线段的类描述线段的类(成员函数)(成员函数)CLine()CLine(POINTfrom,POINTto,COLORREFcolor,intwidth);CLine&operator=(CLine&line);voidSerialize(CArchive&ar);voidDrawLine(CDC*pDC);virtualCLine()DECLARE_SERIAL(CLine);文档类文档类n数据定义中,添加如下数据成员数据定义中,添加如下数据成员public:
CLinem_lineListMAX_LINES;intm_nCount;n初始化初始化voidCMyDoc:
DeleteContents()m_nCount=0;文档类文档类n序列化序列化voidCMyDoc:
Serialize(CArchive&ar)if(ar.IsStoring()arm_nCount;for(inti=0;im_nCount;i+)m_lineListi.Serialize(ar);视图类视图类n数据定义(不需序列化的数据定义在此)数据定义(不需序列化的数据定义在此)public:
COLORREFm_colorCurr;/当前颜色当前颜色intm_nCurrWidth;/当前线宽当前线宽BOOLm_bCaptured;/是否按下鼠标左键是否按下鼠标左键CPointm_pointFrom;/当前线始端当前线始端CPointm_pointTo;/当前线终端当前线终端n初始化初始化视图类视图类n显示图形显示图形voidCMyView:
OnDraw(CDC*pDC)CMyDoc*pDoc=GetDocument();ASSERT_VALID(pDoc);for(inti=0;im_nCount;i+)pDoc-m_lineListi.DrawLine(pDC);视图类视图类l数据修改(鼠标消息)数据修改(鼠标消息)lDownlMovelUpUpdateAllViews(this);/MDI特殊用法l菜单菜单l菜单界面更新菜单界面更新16.2滚动视图滚动视图n滚动视图类滚动视图类CScrollViewn重要方法重要方法lSetScrollSizes()l坐标转换调试技术调试技术n使用使用AppWizard建立建立MDI程序框架程序框架程序设计举例程序设计举例n例例16-3改写例改写例16-1的绘图程序,使之使用滚动视图,同的绘图程序,使之使用滚动视图,同时选用合适的映射模式,使程序具有时选用合适的映射模式,使程序具有“所见即所所见即所得得”的打印风格的打印风格主要修改
(一)主要修改
(一)voidCMy1603View:
OnInitialUpdate()CScrollView:
OnInitialUpdate();SetScrollSizes(MM_TWIPS,CSize(11520,15120);voidCMy1603View:
OnPrepareDC(CDC*pDC,CPrintInfo*pInfo)pDC-SetMapMode(MM_TWIPS);CScrollView:
OnPrepareDC(pDC,pInfo);主要修改
(二)主要修改
(二)n坐标转换坐标转换voidCMy1603View:
OnLButtonDown(UINTnFlags,CPointpoint)CScrollView:
OnLButtonDown(nFlags,point);CClientDCdc(this);OnPrepareDC(&dc);dc.DPtoLP(&point);/物理坐标转换为逻辑坐标物理坐标转换为逻辑坐标m_pointFrom=m_pointTo=point;SetCapture();m_bCaptured=TRUE;上机练习题上机练习题n完完善善例例16-3的的绘绘图图程程序序,包包括括改改善善界界面面(如如设设计计专专用用图图标标,完完善善菜菜单单等等)、加加上上绘绘制制其其他他图图形形的的功功能等。
能等。
n将吹泡泡程序的结构改为将吹泡泡程序的结构改为MDI,并使用滚动视图。
,并使用滚动视图。
结结束束语语n学好程序设计语言的唯一途径是学好程序设计语言的唯一途径是上机练习。
上机练习。
n你的编程能力与你在计算机上投入的时间成你的编程能力与你在计算机上投入的时间成正比。
正比。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第章多 文档 界面 程序
![提示](https://static.bdocx.com/images/bang_tan.gif)