按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
…………………………………………………………Page 394……………………………………………………………
第篇 湷觥 FC 程式設計
因为CPoint 常常被用作MFC 类别成员函数的参数。
■ CTime 表现绝对时间, 提供许多成员函数, 包括取得目前时间( static
GetCurrentTime)、将时间资料格式化、抽取特定字段(时、分、秒)等等。它
对于+ 、…、+= 、…+ 等运算子都做了多载动作。
■ CTimeSpan 以秒数表现时间,通常用于计时码表。提供许多成员函数,包括把
秒数转换为日、时、分、秒等等。
■ CString 用来处理字符串。支持标准的运算子如= 、+= 、《 和》 。
异常处理类别 (exception handling classes)
所谓异常情况(exception ),是发生在你的程序执行时期的不正常情况,像是文件打不
开、内存不足、写入失败等等等。我曾经在第2章最后面介绍过异常处理的观念及相
关的MFC 类别,并在第4章「Exception Handling」一节介绍过一个简单的例子。与「异
常处理」有关的MFC 类别一共有以下11 种:
CException
CException
CArchiveException
CArchiveException
CDaoException
CDaoException
CDBException
CDBException
CFileException
CFileException
CMemoryException
CMemoryException
CNotSupportedException
CNotSupportedException
COleException
COleException
COleDispatchException
COleDispatchException
CResourceException
CResourceException
CUserException
CUserException
332
…………………………………………………………Page 395……………………………………………………………
第5章 總觀Application Framework
Windows API classes
这是MFC 声名最著的一群类别。如果你去看看源代码,就会看到这些类别的成员函数
所对应的各个Windows API 函数。
■ CWinThread 代表MFC 程序中的一个执行线程。自从3。0 版之后,所有的MFC
类别就都已经是thread…safe 了。SDK 程序中标准的消息循环已经被封装在此
一类别之中(你会在第6章看到我如何把这一部份开膛剖肚)。
■ CWinApp 代表你的整个MFC 应用程序。此类别衍生自CWinThread;要知
道,任何32 位Windows 程序至少由一个执行线程构成。CWinApp 内含有用
的成员变量如m_szExeName, 放置执行档档名, 以及有用的成员函数如
ProcessShellmand,处理命令列选项。
■ CWnd 所有窗口,不论是主框窗口、子框窗口、对话框、控制组件、view 视
窗,都有一个对应的C++ 类别,你可以想象「窗口handle 」和「C++ 对象」
结盟。这些C++ 类别统统衍生自CWnd,也就是说,凡衍生自CWnd 之类别才
能收到WM_ 窗口消息(WM_MAND 除外)。
所谓「窗口handle 」和「C++ 对象」结盟,实际上是CWnd 对象有一个成员变
数m_hWnd ,就放着对应的窗口handle 。所以,只要你手上有一个CWnd 对象
或CWnd 对象指针,就可以轻易获得其窗口handle:
HWND hWnd = pWnd…》m_hWnd;
■ CCmdTarget CWnd 的父类别。衍生自它, 类别才能够处理命令消息
WM_MAND。这个类别是消息映射以及命令消息绕行的大部份关键,我将
在第9章推敲这两大神秘技术。
■ GDI 类别、DC 类别、Menu 类别。
333
…………………………………………………………Page 396……………………………………………………………
第篇 湷觥 FC 程式設計
Application framework classes
这一部份最为人认知的便是Document/View ,这也是使MFC 跻身application framework
的关键。Document/View 的观念是希望把资料的本体,和资料的显像分开处理。由于文
件产生之际,必须动态生成Document/View/Frame 三种对象,所以又必须有所谓的
Document Template 管理之。
■ CDocTemplate、CSingleDocTemplate、CMultiDocTemplate Document Template 扮演
黏胶的角色,把Document 和View 和其Frame (外框窗口)胶黏在一块儿。
■ CSingleDocTemplate 一次只支持一种文件类型,CMultiDocTemplate 可同时支持多
种文件类型。注意,这和MDI 程序或SDI 程序无关,换句话说,MDI 程序
也可以使用CSingleDocTemplate,SDI 程序也可以使用CMultiDocTemplate 。
但是,逐渐地,MDI 这个字眼与它原来的意义有了一些出入(要知道,这个字眼早
在SDK 时代即有了)。因此,你可能会看到有些书籍这么说:MDI 程序使用
CMultiDocTemplate,SDI 程序使用CSingleDocTemplate 。
■ CDocument 当你为自己的程序由CDocument 衍生出一个子类别后,应该在其
中加上成员变量,以容纳文件资料;并加上成员函数,负责修改文件内容以及
读写档。读写文件由虚拟函数Serialize 负责。第8章的Scribble Step1 范例程序
有极佳的示范。
■ CV