面向对象编程技术OOP2012_2

上传人:灯火****19 文档编号:124908268 上传时间:2020-03-14 格式:PPT 页数:163 大小:1.22MB
返回 下载 相关 举报
面向对象编程技术OOP2012_2_第1页
第1页 / 共163页
面向对象编程技术OOP2012_2_第2页
第2页 / 共163页
面向对象编程技术OOP2012_2_第3页
第3页 / 共163页
面向对象编程技术OOP2012_2_第4页
第4页 / 共163页
面向对象编程技术OOP2012_2_第5页
第5页 / 共163页
点击查看更多>>
资源描述

《面向对象编程技术OOP2012_2》由会员分享,可在线阅读,更多相关《面向对象编程技术OOP2012_2(163页珍藏版)》请在金锄头文库上搜索。

1、考试时间安排考试时间安排 l考试初步拟安排在12月16日 l即第16周周五1 2节 1 2 第一章第一章 Visual C Visual C 集成开发环集成开发环 境简介境简介 3 项目的项目的创建创建与编译 链接与编译 链接过程过程 4 Visual C IDEVisual C IDE功能组成功能组成 编辑 AutoComplete IntelliSense 编译 预编译头文件 stdafx h 可以加快编译速度 链接 增量式链接 Project Settings Link Link Incrementally 调试 Edit 16 显示一个字符串显示一个字符串 l绘制设备上下文 Begin

2、Paint EndPaint 17 添加资源添加资源 l菜单 l对话框 18 SDKSDK程序向程序向MFCMFC程序转变程序转变 l第一步 WinMain改造为CWinApp l第二步 窗口函数改造为消息映射 19 Win32 APIWin32 API应用程序的修改应用程序的修改 lInitApplication lInitInstance l消息映射结构体 20 为什么使用为什么使用MFCMFC l是微软提供的Windows编程接口 l使应用程序的结构标准化 l使应用程序小而且快 DLL lVisual C 降低编码复杂程度 lMFC库具有丰富的特性 21 第三章第三章 用用AppWiza

3、rdAppWizard创建的第创建的第 一个一个MFCMFC程序程序 l目的 如何编制一个具有一定功能的MFC类库 应用程序 引入简单的视图 文档概念 l什么是视图 用户角度 与其他Windows窗口一样的窗口 程序员 从MFC的Cview类派生的类的一个对象 l单文档界面和多文档界面 单文档 一次只能打开一个文档 NotePad 多文档 一次能打开多个文档 Word 22 l应用程序的主要元素 WinMain函数 CMyApp类 theApp CMyApp InitInstance CMyApp Run CMyApp OnIdle CMyFrame类 CMyFrame OnLButtonDo

4、wn CMyFrame OnPaint CMyFrame OnDraw 关闭主画面窗口后关闭应用程序 23 MFCMFC库消息映射库消息映射 lMFC库对Windows消息映射不采用虚拟 函数 而通过宏把特定的消息映射到派 生类成员函数 主要是为避免大量的 vtable开支 l菜单命令消息和按扭消息的处理与 Windows消息一样 l一个MFC消息处理程序需要一个函数原 型 一个函数体和一个在消息映射中的 项 24 MFCMFC库消息映射库消息映射 lafx msg void OnLButtonDown UINT nFlags Cpoint point lCMyFrame OnLButtonD

5、own UINT nFlags CPoint point l lBEGIN MESSAGE MAP CMyFrame CFrameWnd ON WM LBUTTONDOWN lEND MESSAGE MAP 25 文档和视图文档和视图 l文档 代表数据模型 基类是CDocument l视图 代表用户接口 基类是Cview 26 第一个第一个MFCMFC程序程序 l什么是视图 用户角度 与其他Windows窗口一样的窗口 程序员 从MFC的Cview类派生类的一个对象 l单文档界面和多文档界面 单文档 一次只能打开一个文档 NotePad 多文档 一次能打开多个文档 Word l在窗口中绘图 通

6、过响应OnDraw 函数来完成绘图 设备上下文 图形设备对象 27 l资源编辑器 ex03a rc包含 afxres h 只读符号 afxres rc 通用组件 resource h 自定义符号 lDebug与Release目标 l启用诊断宏 C WINNT afx ini TraceEnabled 1 Tools MFC Tracer enable tracing l予编译头文件 stdafx cpp stdafx h 28 在视图窗口中绘图在视图窗口中绘图 通过修改OnDraw 函数来完成绘图 l是CView类的虚拟成员函数 每次视图重画时调 用 WM PAINT OnPaint OnDr

7、aw l如果程序的数据被改变 则可以调用视图的 Invalidate 成员函数 并最终调用OnDraw Invalidate WM PAINT OnDraw l对视图窗口的重画不要过于频繁 画图过程中涉及的MFC类 l设备上下文 l其他图形设备对象 29 设备上下文设备上下文 lWindows系统不允许直接操作显示硬件 而是通过一个抽象层 设备上下文来 进行通讯 lMFC编程中 设备上下文是CDC及其派 生类的对象 l添入代码 30 资源资源 l资源编辑器 ex03a rc包含 加速器 对话框 图标 菜单 字符串 工 具条 版本信息 afxres h 只读符号 通用的MFC库资源 afxres

8、 rc 通用组件 通用的MFC库资源 resource h 自定义符号 31 DebugDebug与与ReleaseRelease目标目标 l分两个版本 发行版和调试版 l区别 源码调试 诊断宏 链接库 编 译优化等方面不同 l启用诊断宏 C WINNT afx ini TraceEnabled 1 Tools MFC Tracer enable tracing l予编译头文件 stdafx cpp stdafx h Yc stdafx cpp Yu 复用 Fp pch文件路径 编译开关 32 第四章第四章 基本事件处理 映射模式基本事件处理 映射模式 lMFC类库中有很多On 函数 由框架调

9、用 完成对事件的响应 l他们不是虚拟函数 必须通过消息映射结构 使应用框架和我们的代码 关联 l消息映射 当用户在视图中按下鼠标 Windows发送 WM LBUTTONDOWN消息给视图窗口 视图窗口 必须有一个OnLButtonDown UINT nFlags CPoint point 成员函数来响应该消息 头文件中加入消息处 理函数原型afx msg void OnLButtonDown UINT nFlags CPoint point 通过消息映射宏将框架和函数 关联 将消息和消息的响应函数连接的过程称为消 息映射 33 消息映射的步骤 消息映射的步骤 定义函数 void CMyVie

10、w OnLButtonDown UINT nFlags CPoint point 函数原型 afx msg void OnLButtonDown UINT nFlags CPoint point 消息映射宏 lBEGIN MESSAGE MAP ON WM LBUTTONDOWN lEND MESSAGE MAP 头文件中添加 lDECLARE MESSAGE MAP 34 保存视图的状态保存视图的状态 l通过一些状态的变化反映事件 在引入文档类 之前 存放在视图的数据成员中 CRect m rectEllipse UINT m nColor l数据成员初始化 放在视图的构造函数中 CEx04

11、aView CEx04aView m rectEllipse 0 0 200 20 0 m nColor GRAY BRUSH 35 如何反映事件如何反映事件 l鼠标点击不会引起重画 需要调用 CWnd InvalidateRect LPRECT rect l视图的客户区 lCRect CSize Cpoint及其相互运算 l如何判断点在矩形内部 CRect rect if rect PtInRect point l如何判断点在区域内部 CRgn rgn rgn CreateEllipticRgnIndirect m rectEllipse if rgn PtInRegion point l实

12、例 36 映射方式映射方式 l为使显示与显示分辨率无关 应使用不同于以 像素为单位的坐标系统 l设备坐标 以像素表示的坐标值 l逻辑坐标 当前映射方式下的坐标值 l映射方式 逻辑坐标和设备坐标之间的比例关 系 lWindows映射方式 映射方式逻辑单位 MM LOENGLISH 0 01 inch MM HIENGLISH 0 001 inch MM LOMETRIC 0 1 mm MM HIMETRIC 0 01 mm MM TWIPS 1 1440 inch MM TEXT1pixel 37 MM TEXTMM TEXT映射方式映射方式 l逻辑坐标和设备坐标1 1 l坐标X向右增加 坐标Y

13、向下增加 l通过调用CDC的SetWindowOrg SetViewportOrg改变原点 CMyView OnDraw CDC pDC pDC SetMapMode MM TEXT pDC SetWindowOrg CPoint 100 100 将逻辑坐标 100 100 设置为窗口原点 38 自定义映射方式一 自定义映射方式一 固定缩放的映射方式固定缩放的映射方式 向右X增加 向下Y减少 39 自定义映射方式二 自定义映射方式二 缩放可变的映射方式缩放可变的映射方式 可以改变缩放因子和原点 MM ISOTROPIC和MM ANISOTROPIC MM ISOTROPIC纵横比始终是1 1

14、MM ANISOTROPIC可以分别改变X和Y缩放因子 40 坐标转换坐标转换 l一些重要的规则 CDC的成员函数使用逻辑坐标 CWnd的成员函数使用设备坐标 在设备坐标系中进行击键测试如 CRect PtInRect 用逻辑坐标存储长期的值 CDC的函数LPtoDP和DPtoLP负责两个系统之间的 转换 在CView OnPrepareDC 中完成映射方式设定 编程示例 41 滚动窗口滚动窗口 l当窗口比屏幕大时 可能需要滚动视口 l通过从CScrollView中派生视图类可以实现 l在OnInitialUpdate 中定义逻辑大小和映射方式 l见举例 42 第五章第五章 图形设备接口图形设

15、备接口 l所有与绘制有关的操作都要用到GDI元素 l设备上下文是最重要的GDI元素 代表某个具 体的物理设备 43 设备上下文类设备上下文类 l基类是CDC 每个设备上下文对象有一个 Windows设备上下文 由32位HDC句柄标识 lCDC类的虚拟性是应用框架的一个重要特性 l显示上下文类 CClientDC CWindowDC等 44 设备上下文对象设备上下文对象 构造和销毁构造和销毁 构造设备上下文对象后 应及时销毁 Windows限 制可获取设备上下文的数量 构造的两种方法 45 设备上下文的状态设备上下文的状态 l使用CDC对象绘图时 屏幕上的内容依赖于设 备上下文的当前状态 绘图需

16、要的相关对象 笔 刷子 字体 映射方式 其他方面 文本对齐方式 填充方式等 46 CPaintDCCPaintDC类类 l重写了OnPaint函数后 需要用到CPaintDC类 lOnPaint用正确设置的CPaintDC调用OnDraw 47 图形设备接口对象图形设备接口对象 lCBitmap lCBrush lCFont lCPalatte lCPen lCRgn 48 如何构造和销毁如何构造和销毁 l一步构造 CPen newPen PS DASHDOTDOT 2 COLORREF 0 l先定义对象 再创建 CFont font font CreateFont 30 10 0 0 400 FALSE FALSE 0 ANSI CHARSET OUT DEFAULT PRECIS CLIP DEFAULT PRECIS DEFAULT QUALITY DEFAULT PITCH FF MODERN Courier New TrueType l如何断开其与设备上下文的关系 先选出设备上下文 然后析构 库存GDI对象自动析构 49 字体字体 l字体是GDI对象 l字体的选择 与设备无关

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > IT计算机/网络 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号