龚建伟评:这篇学习笔记虽然不是系统的阐述某个问题,但读来让人感到收获不小,无论你是老鸟还是菜鸟,都会认同的。我希望XGM能够继续写下去,看了《深入浅出MFC》再来看这些笔记,也有温故知新之感
俟杰先生的《深入浅出MFC》是一本好书,本人是作为有一定C++基础知识并对VC有一点感性认识的VC初学者来接触这本书的。应该说这本书并不真正适合像我这样的初学者,但通读完该书,还是有一些收获的,现只整理其中的一部分,作为我的一个学习笔记吧。
1. 安装VC++,为什么要先安装Internet Explorer?(是不是很多老鸟也不知道啊,侯俊杰先生的宗旨就是知其然,还要知其所以然,5555555555 …………)
因为微软的所有Visual Tools(包括Visual C++、Visual Basic、Visual FoxPro、Visual J++、Visual InterDev等)都集中由所谓的Visual Studio 管理,而这些工具有一个极大的目标,就是要协助开发Internet应用软件,所以它们希望能够和IE有所搭配。
2. SDK:Software Development Kit 原指软件开发工具,但现在已经变成了一个专有名词,凡以Windows raw API撰写的程序通常也称为SDK程序。也有人把Windows API称为SDK API。
3. 不同种类之对象的构造函数(对象诞生后第一个执行并且是自动执行的函数)及析构函数(对象行将毁灭,但未毁灭之前一刻,最后执行并且自动执行的函数)执行时机对比如下:
<o:p> </o:p>
|
全局对象
|
局部对象
|
静态对象
|
以new产生的对象
|
构造函数
|
程序一开始就执行(比程序进入点更早)
|
对象诞生时执行
|
析构函数
|
程序即将结束时执行
|
程序流程离开该对象的存活范围时执行
|
程序将结束时执行,但比全局对象的析构函数早一步进行。
|
对象被delete时执行
|
4. C++并不是纯种的面向对象语言(SmallTalk 和 Java才是)。所以,MFC之中得以存在有不属于任何类的全局函数,它们统统在函数名称开头冠以Afx(x并没有什么意思,只是为了凑成一个响亮的名字,Af即Application Framework)
下面是常见的Afx全局函数:
AfxBeginThread:开始一个新的线程
AfxEndThread:结束一个旧的线程
AfxFormatString1:类似printf一般地将字符串格式化
AfxFormatString2:类似printf一般地将字符串格式化
AfxMessageBox:类似Windows API 函数 MessageBox
AfxOuputDebugString:将字符串输往除错装置
AfxGetApp:获得application object (CwinApp派生对象)的指针
AfxGetMainWnd:获得程序主窗口的指针
AfxGetInstance:获得程序的instance handle
5. MFC数据类型
下面这些是和Win32程序共同使用的数据类型
BOOL:布尔值,取值为TRUE or 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
下面这些是MFC独特的数据类型
POSITION:一个数值,代表collection对象(例如数组或链表)中的元素位置,常 用于MFC collection classes(即数据处理类,如CArray)
LPCRECT:32-bit指针,指向一个不变的RECT结构
6. 奇怪的窗口类名称Afx:b:14ae:6:3e8f
用Spy++(VC++所附的一个工具)观察窗口类的名称时,会发现窗口类名称变成像Afx:b:14ae:6:3e8f这副奇怪的模样?
原来是Application Framework 把窗口类的名称转换为Afx:: x :y :z :w的类型,成为独一无二的窗口类型名称:
x:窗口风格的hex值
y:窗口鼠标光标的hex值
z:窗口后台颜色的hex值
w:窗口图标的hex值
7. Serializable 的必要条件
让一个对象有Serializable能力,它必须派生自一个Serializable类,一个类要成为Serializable,必须有下列五大条件:
(1)从Cobject派生下来,如此一来,可保有RTTI、动态生成等机能
(2)类的声明部分必须有DECLARE_SERIAL宏,此宏需要一个参数:类名称
(3)类的实作部分必须有IMPLEMENT_SERIAL宏,此宏需要三个参数:一是类名称,二是基类名称,三是 schema no.
(4)改写Serialize虚拟函数,使它能够适当地把类的成员变量写入档案中
(5)为此类加上一个default构造函数(也就是无参数之构造函数),这个条件常为人所忽略,但它是必要的,因为若一个对象来自档案,MFC必须先动态生成它,而且在没有任何参数的情况下调用其构造函数,然后才从档案中读出对象数据。
<o:p> </o:p>
唉,好东东实在太多了,比如对MFC六大关键技术之仿真,三大宏的内部揭密等等(咦,我不是在推销这本书吧,呵呵)感兴趣的话请看看这本书吧,可以找我借哦,所谓“书非借不能读也”。呵呵………
分享到:
相关推荐
深入浅出MFC读书笔记3 深入浅出MFC 读书笔记
深入浅出MFC读书笔记2 深入浅出MFC 读书笔记
这是MFC的学习笔记,很好的。比较容易入门。
深入浅出MFC读书笔记 MFC 深入浅出
深入浅出MFC 深入浅出MFC 深入浅出MFC
深入浅出MFC_简体中文版_侯捷 + 深入浅出MFC笔记(配合原书的好笔记)
《深入浅出MFC》分为四大篇。第一篇提出学习MFC程序设计之前的必要基础,包括Windows程序的基本观念以及C++的高阶议题。
深入浅出MFC--侯捷深入浅出MFC--侯捷深入浅出MFC--侯捷深入浅出MFC--侯捷深入浅出MFC--侯捷深入浅出MFC--侯捷深入浅出MFC--侯捷
《深入浅出MFC》读书心得,我多年的笔记。
1996 年11 月,我在书店看到了深入浅出MFC 这本书,让我想起自己曾经暗暗告诉过自己:Application Framework 真是一个好东西。我在书店驻足察看这本书五分钟之后,我便知道这本书是一定要买下的。适巧我工作上的项目...
1996 年11 月,我在书店看到了深入浅出MFC 这本书,让我想起自己曾经暗暗告诉过自己:Application Framework 真是一个好东西。我在书店驻足察看这本书五分钟之后,我便知道这本书是一定要买下的。适巧我工作上的项目...
深入浅出MFC.pdf深入浅出MFC.pdf深入浅出MFC.pdf深入浅出MFC.pdf深入浅出MFC.pdf深入浅出MFC.pdf深入浅出MFC.pdf深入浅出MFC.pdf深入浅出MFC.pdf
深入浅出MFC简体中文版(附源码)
深入浅出.MFC,一本非常好的电子书资料,希望大家学习参考
候捷的经典之作,笔记是学习心得,希望大家喜欢
深入浅出MFC,研究mfc原理的好书。
深入浅出MFC侯捷
深入浅出MFC第二版高清晰书签深入浅出MFC第二版高清晰书签深入浅出MFC第二版高清晰书签深入浅出MFC第二版高清晰书签深入浅出MFC第二版高清晰书签深入浅出MFC第二版高清晰书签深入浅出MFC第二版高清晰书签深入浅出MFC...