WndProc函数的用法 结构 句柄 前缀的用法

WndProc :

用于WndProc的第二个参数的UINT数据型态只是一个unsigned int (无正负号整数) ,在Windows 98中,这是一个32位的值。用于WinMain的第三个参数的PSTR数据型态是指向一个字符串的指针,即是一个char *。  其它数据型态的含义不太明显。例如,WndProc的第三和第四个参数分别被定义为WPARAM和LPARAM,这些名字的来源有点历史背景:当Windows还是16位系统时,WndProc的第三个参数被定义为一个WORD,这是一个16位的 无正负号短(unsigned short)整数,而第四个参数被定义为一个LONG,这是一个32位有正负号长整数,从而导致了文字「PARAM」前面加上了前置前缀「W」和「L」 。当然,在32位的Windows中,WPARAM被定义为一个UINT,而LPARAM被定义为一个LONG(这就是C中的long整数型态),因此窗口消息处理程序的这两个参数都是32位的值。这也许有点奇怪,因为WORD数据型态在Windows98中仍然被定义为一种16位的 无正负号整数,因此「PARAM」前的「W」就有点误用了。

WndProc函数传回一个型态为LRESULT的值,该值简单地被定义为一个LONG。 WinMain函数被指定了一个WINAPI型态(在表头文件中定义的所有Windows函数都被指定这种型态) ,而WndProc函数被指定一个CALLBACK型态。这两个标识符都被定义为_stdcall,表示在Windows本身和使用者的应用程序之间发生的函数呼叫的呼叫参数传递方式。
HELLOWIN还使用了Windows表头文件中定义的四种数据结构 (我们将在本章稍后加以讨论)。这些数据结构如表所示。

 
结构                         含义
MSG                       消息结构
WNDCLASS           窗口类别结构
PAINTSTRUCT      绘图结构
RECT                      矩形结构
前面两个数据结构在WinMain中使用,分别定义了两个名为msg和wndclass的结构,后面两个数据结构在WndProc中使用,分别定义了ps和rect结构。

句柄简介
 
最后,还有三个大写标识符,用于不同型态的「句柄」: 
 
标识符                       含义
HINSTANCE           执行实体(程序自身)句柄
HWND                     窗口句柄
HDC                        设备内容句柄
句柄在Windows中使用非常频繁。在本章结束之前,我们将遇到HICON(图标句柄) 、HCURSOR(鼠标光标句柄)和HBRUSH(画刷句柄) 。

句柄是一个(通常为32位的)整数,它代表一个对象。Windows中的句柄类似传统C或者MS-DOS程序设计中使用的文件句柄。程序几乎总是通过呼叫Windows函数取得句柄。程序在其它Windows函数中使用这个句柄,以使用它代表的对象。代号的实际值对程序来说是无关紧要的。但是,向您的程序提供代号的Windows模块知道如何利用它来使用相对应的对象。

经常用到的变量前缀

 
前缀                       数据型态
c                           char或WCHAR或TCHAR
by                         BYTE (无正负号字符)
n                           short
i                            int
x, y                       int分别用作x坐标和y坐标
cx, cy                   int分别用作x长度和y长度;C代表「计数器」
b或f                      BOOL (int);f代表「旗标」
w                          WORD (无正负号短整数)
l                            LONG (长整数)
dw                        DWORD (无正负号长整数)
fn                          function(函数)
s                           string(字符串)
sz                         以字节值0结尾的字符串
h                           句柄
p                           指标 
 

其中的lpfn前缀代表「指向函数的长指标」 。(在Win32 API中, 长指标和短指标(或者近程指标)没有区别。 这只是16位Windows的遗物。 )cb前缀代表「字节数」而且通常作为一个常数来表示一个字节的大小。h前缀是一个句柄,而hbr前缀代表「一个画刷的代号」 。lpsz前缀代表「指向以0结尾字符串的指针」 。

 

                      

你可能感兴趣的:(WndProc函数的用法 结构 句柄 前缀的用法)