一,常見數(shù)據(jù)類型
WORD:??????????????? 16位無符號(hào)整形數(shù)據(jù)
DWORD:???????????? 32位無符號(hào)整型數(shù)據(jù)(DWORD32)
DWORD64:???????? 64位無符號(hào)整型數(shù)據(jù)
INT:?????????????????????? 32位有符號(hào)整型數(shù)據(jù)類型
INT_PTR:???????????? 指向INT數(shù)據(jù)類型的指針類型
INT32:????????????????? 32位符號(hào)整型
INT64:????????????????? 64位符號(hào)整型
UINT:????????????????????無符號(hào)INT
LONG:???????????????? 32位符號(hào)整型(LONG32)
ULONG:????????????? 無符號(hào)LONG
LONGLONG:????? 64位符號(hào)整型(LONG64)
SHORT:??????????????無符號(hào)短整型(16位)
LPARAM:?????????? 消息的L參數(shù)
WPARAM:???????? 消息的W參數(shù)
HANDLE:???????????對(duì)象的句柄,最基本的句柄類型
HICON:?????????????? 圖標(biāo)的句柄
HINSTANCE:??? 程序?qū)嵗木浔?/p>
HKEY:??????????????? 注冊(cè)表鍵的句柄
HMODULE:?????? 模塊的句柄
HWND:??????????????窗口的句柄
LPSTR:????????????? 字符指針,也就是字符串變量
LPCSTR:?????????? 字符串常量
LPCTSTR:???????? 根據(jù)環(huán)境配置,如果定義了UNICODE宏,則是LPCWSTR類型,否則則為LPCSTR類型
LPCWSTR:?????? UNICODE字符串常量
LPDWORD:????? 指向DWORD類型數(shù)據(jù)的指針
CHAR:?????????????? 8比特字節(jié)
TCHAR:???????????? 如果定義了UNICODE,則為WCHAR,否則為CHAR
UCHAR:????????????無符號(hào)CHAR
WCHAR:???????????16位Unicode字符
BOOL:??????????????? 布爾型變量
BYTE:???????????????? 字節(jié)類型(8位)
CONST:???????????? 常量
FLOAT:????????????? 浮點(diǎn)數(shù)據(jù)類型
SIZE_T:????????????? 表示內(nèi)存大小,以字節(jié)為單位,其最大值是CPU最大尋址范圍
VOID:???????????????? 無類型,相當(dāng)于標(biāo)準(zhǔn)C語言中的void
WINAPI:?????????????Windows API的函數(shù)調(diào)用方式,常見于SDK頭文件中對(duì)API函數(shù)的聲明中,相當(dāng)于_stdcall(更嚴(yán)格地說,這不是數(shù)據(jù)類型,而是一種函數(shù)調(diào)用約定
二,Windows數(shù)據(jù)類型命名規(guī)律
基本數(shù)據(jù)類型包括:BYTE、CHAR、WORD、SHORT、INT等。
指針類型的命令方式一般是在其指向的數(shù)據(jù)類型前加“LP”或“P”,比如指向DWORD的指針類型為“LPDWORD”和“PDWORD”
各種句柄類型的命名方式一般都是在對(duì)象名前加“H”,比如位圖(BITMAP)對(duì)應(yīng)的句柄類型為“HBITMAP”。
無符號(hào)類型一般是以“U”開頭,比如“INT”是符號(hào)類型,“UINT”是無符號(hào)類型
根據(jù)這些命名規(guī)律以及自己的經(jīng)驗(yàn)看到一些沒見過的數(shù)據(jù)類型也就能知道它的代表的意思
三,Windows參數(shù)簡寫
1、??b 布爾
2、 by BYTE
3、 c chr 或WCHAR TCHAR
4、 n short
5、 i int
6、 x、y 分別表示x 坐標(biāo),y 坐標(biāo)
7、 cx、cy 分別表示x 方向長度和y 方向長度
8、 b 或f BOOL(int),f 代表“flag”
9、 w WORD(無符號(hào)short)
10、l LONG 長整數(shù)
11、dw DWORD 無符號(hào)長整數(shù)
12、fn function 函數(shù)
13、s string 字符串
14、sz 以0 字節(jié)結(jié)尾的字符串
15、h 句柄
16、p 指針
17、lpfn 指向函數(shù)的長指針
18、cb 字節(jié)數(shù)
19、lpsz 指向以0 結(jié)尾的字符串的長指針
20、g_ 全局變量
21、c_ 常量
22、m_ 類數(shù)據(jù)成員
23、s_ 靜態(tài)變量
24、CS_ 類風(fēng)格選項(xiàng)
25、CW_ 創(chuàng)建窗口選項(xiàng)
26、DT_ 繪制文本選項(xiàng)
27、IDI_ 圖標(biāo)ID 號(hào)
28、IDC_ 光標(biāo)ID 號(hào)
29、MB_ 消息框選項(xiàng)
30、SND_ 聲音選項(xiàng)
31、WM_ 窗口消息
32、WS_ 窗口風(fēng)格
33、rc 矩形
四,Windows數(shù)據(jù)類型與標(biāo)準(zhǔn)C數(shù)據(jù)類型的關(guān)系
???????查看Windows數(shù)據(jù)類型的定義可以看到,所有的windows數(shù)據(jù)類型都是由C數(shù)據(jù)類型經(jīng)過類型重定義得到的。
??????? DWORD實(shí)質(zhì)上就是 unsigned long 數(shù)據(jù)類型,32位無符號(hào)整型。
HANDLE類型實(shí)質(zhì)上是void,HANDLE定義為:
typedof??? PVOID??? HANDLE;
HANDLE實(shí)際上就是一個(gè)PVOID,那PVOID又是什么呢?
typeof???? void????? *PVOID;
PVOID就是指向void的指針。
所有的Windows數(shù)據(jù)類型都是通過這種方式在SDK的頭文件中進(jìn)行定義的,它們都是來源于標(biāo)準(zhǔn)C的