浅出 MFC 程式设计 (zhuan)

分享

重点章节剖析: 第三篇: 浅出 MFC 程式设计 (生死因果) 第5章. 纵观 Application Framework 本章介绍了一个MFC程序的框架体系和各种资源、组件等。 a. MFC 中的各种类

 (1). General Purpose classes,包括字符串类、资料处理类(如数组和链表)、异常处理类、存档类别...等等,这些类的特点就是适于后台运作或者类别扩展,不是针对Windos界面的,可以用于Windows程序,也可以用于Console程序或者DOS程序。具体有以下内容: (a). CObject:凡衍生自CObject的类,可继承几个面向对象的重要性质,包括RTTI、Persistence、Dynamic Creation、Diagnostic(错误诊断)。 (b). 数据收集类(Collection Classes):包括CxxxArray、CxxxList和CMapxxx。注意CTypedPtrArray、CTypedPtrList、CTypedPtrMap不在此列。 (c). 简单数据类(simple Value Types):包括CPoint,CRect,CSize,CString,CTime,CTimeSpan。 (d). 异常处理类(exception handling classes):

 (2). Windows API classes,用来封装 Windows API,例如窗体类、对话盒类、DC类...等等。 (a). CWinThread:代表MFC的一个线程,SDK 程序的标准消息回路已经封装在其中; (b). CWinApp:代表整个应用程序,衍生自CWinThread,含有一些有用的的成员变量、成员函数和处理命令列选项; (c). CWnd:所有视窗类都衍生自CWnd,可以处理WM_xxx消息(WM_COMMAND除外); (d). CCmdTarget:所有衍生自此类的都可以处理WM_COMMAND消息; (e). GDI 类、DC 类、Menu 类。

 (3). Application framework classes,Document/View/Frame相关内容 (a). CxxxDocTemplate:文件生成时用以指定Document/View/Frame; (b). CDocument:用于容纳文件资料,并负责保存读取文件内容; (c). CView:所有视窗类都衍生自CWnd,可以处理WM_xxx消息(WM_COMMAND除外);

(4). High level abstractions,视觉性UI对象属于此类,例如工具列CToolBar、状态列CStatusBar、对话框列CDialogBar。加强型的View也在此列,

 (5). operation system extensions,包括 OLE、ODBC、DAO、MAPI、WinSock、ISAPI等等。 以上是深入浅出MFC书中的分类,是从Application Framework中的层次来分的。若是按用途和衍生关系来分类,可以分为以下几个方面(参考MFC Windows程序设计第二版夹页Microsoft Foundation Class Library Version 6.0,本分类待修改完善精确): (a). 窗口相关:CWnd衍生类(Frame,View,Dialog,Control),CMenu,控件支持类(CDockState,CImageList),Graphical Drawing动作和对象类; (b).应用架构相关:CCmdTarget衍生类(CWinThread衍生类,CDocTemplate衍生类,CDocument衍生类等),CCommandLineInfo, CArchive, CDumpContext等; (c). 异常类 (d). 文件类 (e). 数据集类(Collection Class):数组类,链表类,图类 (f). 数据库相关 (g). 同步类:CSyncObject衍生类,CMultiLock,CSingleLock (h). Internet服务相关类:包括Windows Sockets类、CObject衍生的Internet Services类和非CObject衍生的Internet Server API类; (i). 简单数据类和一些结构类 (j). OLE相关类:部分衍生自CCmdTarget (k). 模板类:CTypedPtrxxx (l). 系统支持类 CObject |---------|----------|----------|----------|----------|-----------|----------| CWnd CCmdTarget Exception File Collections Database CSyncObject Internet

b. 全局函数,因为是Application Framework 函数,简称Afx AfxWinInit 被WinMain(由MFC提供)呼叫的一个函数,用做MFCGUI程序初始化的部份,在MFC console程序中需呼叫; AfxBeginThread 开始一个线程的执行; AfxEndThread 结束一个线程的执行; AfxFormatString1 类似printf将字符串格式化; AfxFormatString2 类似printf将字符串格式化; AfxMessageBox 类似Windows API函数MessageBox; AfxOutputDebugString 将字符串输出到出错装置; AfxGetApp 取得应用程序对象的指针; AfxGetMainWnd 取得程序主视窗的指针; AfxGetInstance 取得程序的 instance handle; AfxRegisterClass 以自定的 WNDCLASS 注册窗口类别;

c. 宏,MFC中使用了一些常用的宏来实现RTTI,Dynamic Create之类的功能 DECLARE_DYNAMIC 运行期间类别信息 IMPLEMENT_DYNAMIC 运行期间类别信息 DECLARE_DYNCREATE 动态生成 IMPLEMENT_DYNCREATE 动态生成 DECLARE_SERIAL 对象数据的档案读写 IMPLEMENT_SERIAL 对象数据的档案读写 DECLARE_OLECREATE OLE对象的动态生成 IMPLEMENT_OLECREATE OLE对象的动态生成 DECLARE_MESSAGE_MAP 声明消息映射表的结构 BEGIN_MESSAGE_MAP 开始消息映射表的实现 ON_COMMAND 增加消息映射表的项目 ON_CONTROL 增加消息映射表的项目 ON_MESSAGE 增加消息映射表的项目 ON_OLECMD 增加消息映射表的项目 ON_REGISTERED_MESSAGE 增加消息映射表的项目 ON_REGISTERED_THREAD_MESSAGE 增加消息映射表的项目 ON_THREAD_MESSAGE 增加消息映射表的项目 ON_UPDATE_COMMAND_UI 增加消息映射表的项目 END_MESSAGE_MAP 结束消息映射表的实现 d. 数据类型,MFC与C++相比特有的数据类型 BOOL Boolean值,不是TRUE就是FALSE; BSTR 32-bit 字元指標; BYTE 8-bit 无符号整数; COLORREF 32-bit 颜色值; DWORD 32-bit 无符号整数; LONG 32-bit 有符号整数; LPARAM 32-bit 窗口函数或callback函数的参数; LPCSTR 32-bit 常数字符串指针; LPSTR 32-bit 字符串指针; LPCTSTR 32-bit 常数字符串指针,此字串可移植到Unicode和DBCS(双字节字符集); LPTSTR 32-bit 字符串指针,此字串可移植到Unicode和DBCS(双字节字符集); LPVOID 32-bit 指针,指向未指定类型的变量; LPRESULT 32-bit 窗口函数或callback函数的返回值; UINT 无符号整数,在Win16中是16-bit,在Win32中是32-bit; WNDPROC 32-bit 指向窗口函数的指针; WORD 16-bit 无符号整数; WPARAM 窗口函数或callback函数的参数,在Win16中是16-bit,在Win32中是32-bit; POSITION collection对象中元素的位置; LPCRECT 32-bit 指向常量RECT结构。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值