WORD:16位無符号整形資料
DWORD:32位元組無符号整型資料(DWORD32)
DWORD64:64位元組無符号整型資料
INT:32位有符号整型資料類型
INT_PTR:指向INT資料類型的指針類型
INT32:32位符号整型
INT64:64位符号整型
UINT:無符号INT
LONG:32位符号整型(LONG32)
ULONG:無符号LONG
LONGLONG:64位符号整型(LONG64)
SHORT:無符号短整型(16位)
LPARAM:消息的L參數
WPARAM:消息的W參數(
typedef UINT WPARAM;
typedef LONG LPARAM;
WPARAM是無符号整形,LPARAM是long型。
)
HANDLE:對象的句柄,最基本的句柄類型
HICON:圖示的句柄
HINSTANCE:程式執行個體的句柄
HKEY:系統資料庫鍵的句柄
HMODULE:子產品的句柄
HWND:視窗的句柄
LPSTR:字元指針,也就是字元串變量
LPSTR是MFC特有的資料類型,具體要根據編譯環境的上下文來差別。通常情況下等同于char *,如果在編譯環境中定義了使用UNICODE則等同于wchar *。類似的還有LPCTSTR等同于const char *
LPCSTR:字元串常量
LPCTSTR:根據環境配置,如果定義了UNICODE宏,則是LPCWSTR類型,否則則為LPCSTR類型
LPCWSTR:UNICODE字元串常量
LPDWORD:指向DWORD類型資料的指針
CHAR:8比特位元組
TCHAR:如果定義了UNICODE,則為WCHAR,否則為CHAR
UCHAR:無符号CHAR
WCHAR:16位Unicode字元
BOOL:布爾型變量
BYTE:位元組類型(8位)
CONST:常量
FLOAT:浮點資料類型
SIZE_T:表示記憶體大小,以位元組為機關,其最大值是CPU最大尋址範圍
VOID:無類型,相當于标準C語言中的void
WINAPI:Windows API的函數調用方式,常見于SDK頭檔案中對API函數的聲明中,相當于_stdcall
(更嚴格地說,這不是資料類型,而是一種函數調用約定這些隻是常見的資料類型,Windows資料類型還不止上面列出的類型,還包括很多種,
主要有各種資料的指針、句柄、無符号類型等,可以檢視SDK文檔來了解Windows資料類型更多的細節。
下面再給出Windows資料類型命名的規律,好讓大家在遇到新的資料類型時,可以基本推論出資料類型的意義。
基本資料類型包括:BYTE、CHAR、WORD、SHORT、INT等。
指針類型的指令方式一般是在其指向的資料類型前加“LP”或“P”,比如指向DWORD的指針類型為“LPDWORD”和“PDWORD”
各種句柄類型的命名方式一般都是在對象名前加“H”,比如位圖(BITMAP)對應的句柄類型為“HBITMAP”。
無符号類型一般是以“U”開頭,比如“INT”是符号類型,“UINT”是無符号類型
Windows資料類型與标準C資料類型的關系檢視Windows資料類型的定義可以看到,所有的windows
資料類型都是由C資料類型經過類型重定義得到的。如DWORD實質上就是unsigned long資料類型,32位無符号整型。而經常要用到的
HANDLE類型實質上是無類型指針void,
HANDLE定義為: typedof PVOID HANDLE;
HANDLE實際上就是一個PVOID,那PVOID就是什麼呢?
Typeof void *PVOID;
PVOID就是指向void的指針。
所有的Windows資料類型都是通過這種方式在SDK的頭檔案中進行定義的,它們都是來源于标準
C的資料類型Windows資料類型與Windows API函數的參數、傳回值或一些重要的常量使用的資料類型都是
Windows資料類型。
比如以經常要要到的MessageBox函數,如下:
int MessageBox(
HWND hWnd,
LPCTSTR lpText,
LPCTSTR lpCaption,
UINT uType
);
MessageBox函數的傳回值是int型,是标準C資料類型,但是所有的參數都使用了Windows資料類型。比如
HWND
用于表明視窗的句柄