第二个成员变量lpfnWndProc指定了这一类型窗口的过程函数,也称回调函数。
回调函数的原理:当应用程序收到给某一窗口的消息时(还记得前面讲过的消息通常与窗口相关的吗?),
就应该调用某一函数来处理这条消息。这一调用过程不用应用程序自己来实施,而由操作系统来完成,
但是回调函数本身的代码必须由应用程序自己完成。
对于一条消息,操作系统到底调用应用程序中的哪个函数(回调函数)来处理呢?
操作系统调用的就是接受消息的窗口所属的类型中的lpfnWndProc成员指定的函数。
每一种不同类型的窗口都有自己专用的回调函数,该函数就是通过lpfnWndProc成员指定的。
举例:汽车厂家(应用程序)生产汽车(窗口)好比应用程序创建窗口,用户(操作系统)使用汽车(窗口)好比操作系统管理窗口,
某种汽车(窗口)在销售前就指定好了修理站(类似回调函数),当用户(操作系统)的汽车(窗口)出现故障后(类似窗口收到消息),
汽车用户(操作系统)自己直接找到修理站(回调函数)去修理,不用厂家(应用程序)亲自
将车送到修理站去修理,但修理站还得由厂家(应用程序)事先建造好。
Windows中数据类型 对应的基本数据类型 说明
BOOL bool 布尔值
BSTR unsigned short * 32位字符指针
BYTE unsigned char 8位无符号整数
COLORREF unsigned long 用作颜色值的32位值
DWORD unsigned long 32位无符号整数,段地址和相关的偏移地址
LONG long 32位带符号整数
LPARAM long 作为参数传递给窗口过程或回调函数的32位值
LPCSTR const char * 指向字符串常量的32位指针
LPSTR char * 指向字符串的32位指针
LPVOID void * 指向未定义类型的32位指针
LRESULT long 来自窗口过程或回调函数的32位返回值
UINT unsigned int 32位无符号整数
WORD unsigned short 16位无符号整数
WPARAM unsigned int 当作参数传递给窗口过程或回调函数的32位值
数据类型的前缀是P或LP,表示是一个指针或长指针数据类型。前缀是U,表示无符号数据类型,等等。