1.常见的Afx全域函数
AfxWinInit 被WinMain调用的一个函数,用做MFC GUI程序初始化的一部份
AfxBeginThread 开始一个新的执行线程
AfxEndThread 结束一个旧的执行线程
AfxMessageBox 类似Windows API 函数MessageBox
AfxGetApp 取得application object(CWinApp衍生对象)的指针
AfxGetMainWnd 取得程序主窗口的指针
AfxGetInstance 取得程序的instance handle
AfxRegisterClass 以自定的WNDCLASS 注册窗口类别
2.MFC的数据类型
数据类型
|
意义
|
BOOL
|
Boolean值(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
|
LPTSTR
|
32-bit指针,指向一个字符串。此字符串可移植到Unicode
|
LPVOID
|
32-bit指针,指向一个未指定类型的数据
|
LPRESULT
|
32-bit数值,作为窗口函数或callback函数的返回值
|
UINT
|
Win16中,16-bit无正负号,Win32中,32-bit无正负号
|
WNDPROC
|
32-bit
|
WORD
|
16-bit整数,无正负号
|
WPARAM
|
窗口函数的一个参数,Win16中16bits,Win32中32bits
|
MFC独特的数据类型
数据类型
|
意义
|
POSITION
|
一个数值,代表collection对象(例如数组或链表)中的元素位置,常使用于MFC collection classes
|
LPCRECT
|
32-bit指针,指向一个不变的RECT结构
|
3. CWnd和HWnd
HWND是Windows系统中对所有窗口的一种标识,即窗口句柄。这是一个SDK概念。 CWnd是MFC类库中所有窗口类的基类。微软在MFC中将所有窗口的通用操作都封装到了这个类中,如:ShowWindow等等,同时它也封装了窗口句柄即m_hWnd成员。
由HWnd得到CWnd*:
CWnd wnd;
HWnd hWnd;
wnd.Attach(hWnd);
通常一个窗口资源已经和一个CWnd类的对象关联起来的,由于一般来说这个类是自己创建的,所以自然知道怎么得到指向这个类的指针。由CWnd获取HWnd就容易多了,因为它的一个成员m_hWnd就是所对应窗口的句柄。
wnd->m_hWnd;
这里再提一下封装的概念:MFC是对Windows API的封装,使用OOP是对Windows编程的另外一种观点。MFC认为一个程序是一个对象(CWinApp),该对象管理窗口(CView或 CDialog和CFrameWnd)以及该程序所使用的数据(CDocument)。CWnd是CView和CDialog的父类,主要负责管理程序生成的窗口。由于一个程序拥有确定的窗口(Windows为该程序生成需要的窗口),因此在CWnd的构造函数中已经初始化m_hWnd为该窗口句柄。
4. <>和""
.#include <xxx.h>与#include "xxx.h"的区别:
<>不查找运行时目录,""查找运行时目录。
5.强制类型转换
如果CFish从CAnimal派生而来。则可以将鱼的对象转换为CAnimal的对象,而反之则不行。从现实中理解也是正常的,鱼可以是动物,而动物却不是鱼。再如int可以强制转换成char型。而反之则出错。
6.NULL和0
什么时候用NULL,什么时候用0?
对指针赋值时用NULL,对变量赋值时用0。
所有内容来自互联网