面向对象程序设计(mfc) [兼容模式]

上传人:子 文档编号:47103530 上传时间:2018-06-29 格式:PDF 页数:13 大小:205.43KB
返回 下载 相关 举报
面向对象程序设计(mfc) [兼容模式]_第1页
第1页 / 共13页
面向对象程序设计(mfc) [兼容模式]_第2页
第2页 / 共13页
面向对象程序设计(mfc) [兼容模式]_第3页
第3页 / 共13页
面向对象程序设计(mfc) [兼容模式]_第4页
第4页 / 共13页
面向对象程序设计(mfc) [兼容模式]_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《面向对象程序设计(mfc) [兼容模式]》由会员分享,可在线阅读,更多相关《面向对象程序设计(mfc) [兼容模式](13页珍藏版)》请在金锄头文库上搜索。

1、1MFC基础部分8.MFC基本类库引论 Microsoft基本类(MFC)库是封装SDK结 构、功能以及应用程序框架内部技术。该 应用程序框架隐藏过去Windows程序员不 得不处理的许多重复性工作。得不处理的许多重复性工作。 在封装的每一层都针对不同的应用对象封 装了不同的功能。例如:CWnd,CEdit8.1 MFC的前身AFX AFX(application framework)小组,Microsoft早先创建面 向对象应用程序框架的尝试。在许多方面改造了Windows, 使用了完全不同的窗口和图形子系统,全新的AFX的面向 对象API,提供Windows API高度抽象(不与Windo

2、ws API兼容)。C编写的SDK不容易移植。 使用C创建Windows应用程序的过程容易和直观 确使库能扩展以适应类的发展 更容易使用Windows API特性 使用标准Windows命名约定和编码风格 用类封装Windows API和Windows对象,并按照API的指引完成工 作 重新回到正路,扩展C类,封装、映象Windows API, 并且为面向对象Windows应用程序提供坚实的基础MFC。 AFX小组将全部AFX代码提供给MFC小组。大量 AFX代码作为基本框架被移植到MFC内部,至今 仍在MFC内。但是大部分AFX代码被废弃。 同时,MFC小组编写了集成开发环境IDC以支持 M

3、FC。2 MFC的演变 1992.3 MFC1.0和Microsoft C/C+7.0同时推出, 16位,无doc/view结构,存在CObject和MFC 类CArchive。 1993.2 MFC2.0和VC1.0同时推出,16位, 引入doc/view结构 支持OLE1.0,引入消息映 射,引入公用对话框。 1993.7 MFC(32位)1.0版本随同NT3.1同时 推出。 1993.8 MFC2.1和VC(32位)同时推出。 1993.12 最后的16位VC 1994.9 VC+2.0和32位MFC3.0推出。 8.2 MFC类层次 基本类库可分为两种 CObject派生类 非CObj

4、ect派生类CObject派生类非CObject派生类根类CObject,数组数组/列表列表/简单数据类型,支持类,支持类,j 映像类,调试和异常类,绘图 和打印类,文件和数据库类,映像类,调试和异常类,绘图 和打印类,文件和数据库类, Internet和网络类,和网络类,MFC应用 程序结构类,窗口应用 程序结构类,窗口/对话框对话框/控 件类控 件类简单数据类 典型模板类,典型模板类,OLE类,结构 类,同步类类,结构 类,同步类 8.3 CObject类:MFC的根 从CObject派生的MFC子系统CObject应用程序结构窗口支持屏显图形服务文件服务对话框视图控件框架窗口控件支持图形

5、对象菜单同步对象数组,列表,映射Windows插件 数组,列表,映射类(动态收缩和扩展) 调试和异常类(CDumpContext提供诊断转储的目 的地 ,CMemoryState提供捕捉内存使用状 态,CException捕获代码异常) 图形类CDC 文件和数据库类(CFile,CDatabase, CRecordset) Window Sockets(插件)和Internet服务类 (Internet Server API,ISAPI,使用WinSocket通 信) 控件类(CListCtrl) 菜单CMenu3 8.4 非CObject派生类 OLE类(COle前缀) 简单数据类型类类说明

6、 CImageList存储或归档同样大小的 图象集CPointSDK POINT结构,x,y 坐标对CRectSDK RECT结构,矩形 面积坐标CSize封装距离,相对位置, 成对值 支持类(CWaitCusor类仅将光标变为沙漏, CRectTracker类,通过使用缩放句柄允许用户在 屏幕上对各项移动和调整大小) 同步类(CSemaphore信号量,CMutex互斥量, CCriticalSection临界量,CEvent事件) 类型模板类Program Entry PointWinMain()()Initialize App Initialize InstancePump Messag

7、eCWinApp:InitApplication()Initialize ApplicationCWinApp:InitInstance()Initialize InstanceCWinApp:Run()CWinApp:Run()Pump MessageCWinApp:ExitInstace()Quit? 关于APP类的全局MFC函数 AfxGetApp 返回指向CWinApp对象指针 AfxGetAppName 返回指向包含应用程序名的字符串指针 AfxGetInstanceHandle 返回当前应用程序实例句柄 AfxGetResourceHandle 返回当前应用程序的资源句柄4 系统定

8、义的消息宏前缀前缀消息分类 BM按钮控制消息CB组合框控制消息DM默认下压式按钮控制消息EM编辑框控制消息EM编辑框控制消息LB列表框控制消息SBM滚动条控制消息WM通用窗口消息 消息的取值范围消息类型取值范围系统定义消息(部分I)0x0000到0x03FF用户定义内部消息0x0400到0x07FF RegisterWindowMessage()()系统定义消息(部分II) 0x8000到0xBFFF用户定义外部消息0xC000到0xFFFF消息处理方法 命令消息处理 ON_COMMAND(id,ClassMethod)处理命令消息的响应函数与消息绑定 afx_msg void ClassMe

9、thod();消息响应函数定义 命令消息处理(由用户,或菜单,键盘加速器生成的WM_COMMAND消 息) 通用控制通知消息处理 ON_CONTROL(wNotifyCode,ID,ClassMethod) afx_msg void ClassMethod(); 子窗口的通知消息处理 按钮控制通知处理程序每个Win32公共控件都有为它的控件类型定义的 按钮控制通知处理程序,每个Win32公共控件都有为它的控件类型定义的 相应的通知代码集。WM_NOTIFY为win32公共控件提供一个标准方法, 以便对windows和应用程序的有关控件进行通信。 按钮控件通知处理函数 CButtonON_BN_

10、CLICKED ON_BN_DISABLE ON_BN_DOUBLECLICKED ON_BN_HILITE ON_BN_PAINT ON_BN_UNHILITE组合框控制通知处理程序 CComboBoxON_CBN_CLOSEUP ON_CBN_DBLCLK ON_CBN_DROPDOWN ON_CBN_EDITCHANGE ON_CBN_EDITUPDATE ON CBN ERRSPACE编辑控制通知处理程序 CeditON_EN_CHANGE ON_EN_ERRSPACE ON_EN_HSCROLL ON_EN_KILLFOCUS ON_EN_MAXTEXT ON_EN_SETFOCUS

11、 ON_EN_UPDATE ON EN VSCROLLON_CBN_ERRSPACE ON_CBN_KILLFOCUS ON_CBN_SELCHANGE ON_CBN_SELENDCANCEL ON_CBN_SELENDOK ON_CBN_SETFOCUSON_EN_VSCROLL5 列表框控制消息处理 Clistbox ON_LBN_DBLCLK ON_LBN_ERRSPACE ON_LBN_KILLFOCUS ON_LBN_SELCHANGE ON_LBN_SETFOCUS Windows 消息处理函数 ON_WM_ACTIVE . ON_MESSAGE 用户自定义消息 补充知识:MSDN

12、参考 Focus WM_SETFOCUS ,WM_GETFOCUS,WM_KILLFOCUS WM_KEYDOWN,WM_KEYUP Alt键发送,WM SYSKEYDOWN,WM SYSKEYUPAlt键发送,WM_SYSKEYDOWN,WM_SYSKEYUP WM_CHAR,WM_SYSCHAR (TranslateMessage) VK_.扩展键 非用户区鼠标消息,ON_WM_NCLBUTTONDOWN afx_msg UINT OnNCHitTest(CPoint pt) HTBORDER,HTCLOSE,HTZOOM9 图形设备接口和资源 图形是Windows程序的主体 GUI,Gr

13、aphic User Interface Windows系统就是一个以图形方式存现在的系 统 9.1设备环境类和图形对象 应用程序输出并不直接面向物理设备,如屏幕,打印机 等。 全部面向设备环境(Device Context)的逻辑设备进行 操作。 设备环境包含当前选定的一种设备的信息。画笔,画刷, 字体,位图。 设备环境与实际设备之间的信息由来直接 设备环境与实际设备之间的信息由WindowsOS来直接 管理。 DC广泛应用于GDI(Graphic Device Interface)中。 GDI32.dll。 Win API中的GDI函数都是把DC的句柄作为一个主要参 数来进行操作。6 物理

14、设备与MFC的CDC类之间,是通过GDI调用设备驱 动进行通信应用程序MFC设备环境类GDI设备驱动程序物理设备硬件 MFC应用程序中,所有绘图调用均通过相应的设备环 境对象实现,设备环境对象封装了相应的Windows API功能(利用32位句柄HDC来标示不同的设备环境)。 MFC类库中,CDC类封装设备环境对象,并提供在显 示器,打印机,窗口的客户区上绘图的方法。 所有图形输出都可以使用CDC类来完成。 包括:使用绘图工具,对设备环境进行操作,选定可靠的GDI 对象,对颜色和调色板进行操作,坐标映射和转换,绘制各种 形状,绘制文本,处理字体,处理图元文件。 显示设备环境(DC)定义了逻辑画

15、面,GDI提供在设 备环境上画图的工具,MFC定义了相对画图工具的图 形对象(画笔,画刷,字体,位图,调色板,绘图 区)。 9.2 GDI坐标系统 坐标系分为:物理的,逻辑的坐标系 物理坐标系是指物理设备的坐标系统。原点(0,0)X轴Y轴 多种逻辑坐标系统。 WindowsOS先映射当前逻辑坐标到物理设备坐标,然后才绘制图形。 GDI函数,CDC类都是用的是逻辑坐标系,最终输出可根据映射方式的不同而不同。DC当前的映射方式决定着如何将逻辑坐标转换成相应的设备坐标定着如何将逻辑坐标转换成相应的设备坐标。 程序当中,逻辑坐标通常用于图形绘制,物理坐标通常用于窗口管理(SetWindowPos)。7 举例: CDC:SetMapMode MM_ANISOTROPIC:逻辑和物理坐标间的映像使用成比例可变坐标。当重画时,逻辑窗口内图象可以在任何方向上扩大。此方式不改变当前窗口或视窗的设置。CDC:SetWindowExt和CDC:SetViewPortExt改变单位,原点,缩放比例。 最常用MM_TEXT:默认的映射模式,把设备坐标被映射到象素。 MM_LOENGLISH、MM_HIENGLISH、MM_LOMETRIC、MM_HIMETRIC、MM_TWIPS:是固定比例映射模式。 MM_LOENGLISH 0.01英寸MM HIENGLISH

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

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