前面已經熟悉了 簡單的API 應用程序的編寫了。
今天要掌握的是,Windows數據類型 。
Windows API 使用了很多 Windows 自己定義的數據類型。讀者可能較爲熟悉 C 語言或 C++
語言的數據類型。要熟練使用 Windows API 必須要熟悉 Windows 數據類型。這些數據類型是
Windows 特有的。在 SDK 的相關頭文件中有定義。
在衆多的Windows 數據類型中,最常用的有 DWORD、HANDLE、LPTSTR、WORD、BYTE、 CHAR 等。在 Windows 系統中,DWORD 用於表示無符號整型的數據,意爲 double word,32
位。
在一般情況下BYTE 是 8 位的,而WORD 是 16位,DWORD就是 32位的.。示例代碼start.cpp
LPSTR szString =TEXT("wumi_liu");
CHAR* lp = TEXT("wumi_liu");
CHAR lpstring[120]; //char
DWORD dwMax = 0Xffffffff;//unsigned long
DWORD dwOne = 0X1;
INT iMax = 0XFFFFFFFF;//int
INT iMin = 0X1;
MessageBox(NULL,szString,"LPSTR",MB_OK);
MessageBox(NULL,lp,"CHAR*",MB_OK);
CopyMemory(lpstring,szString,(strlen(szString)+1));//memcpy((Destination),(Source),(Length))
MessageBox(NULL,lpstring,"CHAR[]",MB_OK);
2.最常見的 Windows 數據類型
Windows API 中還會使用到其他很多的Windows 特有的數據類型。常用的類型說明如表:
2.最常見的 Windows 數據類型
Windows API 中還會使用到其他很多的Windows 特有的數據類型。常用的類型說明如表:
Windows 數據類型名命名的規律;
Windows 數據類型的命名都很有規律。
基本數據類型包括 BYTE、CHAR、WORD、SHORT、DOWRD、INT 等。
指針類型的命令方式一般是在其指向的數據類型前加“LP”或“P”,比如指向 DWORD
的指針類型爲“LPDWORD”和“PDWORD”。
各種句柄類型的命令方式一般都是在對象名前加“H”。Windows 系統中有很多對象,
所有表示一個對象的數據類型都是句柄,每一種對象都對應着一種句柄類型,比如與位圖
( BITMAP)對應的句柄類型爲“HBITMAP”,與菜單(MENU)對應的句柄類型爲“HMENU”,與
窗口(WINDOW)對應的句柄類型爲“HWND”。
無符號類型一般是以“U”開頭,比如“INT”是符號類型,“UINT”是無符號類型,
“LONG”是符號類型“ULONG”是無符號類型等
Windows 中的數據結構
Windows API 中的數據結構定義具有一定的特點,如將在第 4 章中使用到的 WIN32_FILE
_ ATTRIBUTE_ DATA 數據結構的定義如下:
typedef struct _WIN32_FILE_ATTRIBUTE_DATA {
DWORD dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
DWORD nFileSizeHigh;
DWORD nFileSizeLow;
} WIN32_FILE_ATTRIBUTE_DATA,*LPWIN32_FILE_ATTRIBUTE_DATA;
Windows SDK 中,結構體也有自己的命名規範。一般情況下,Windows 系統中使用全大
寫來命名結構體、共用體,並使用“_”來分隔單詞,在結構名加“LP”或“P”表示指向數
據結構的指針。
Windows API 的功能分類
Windows API 所能實現的功能包括很多方面,在進行應用程序的開發時,開發人員可能
會使用到文件、進程、內存、權限、系統信息等系統的基本服務和系統管理類的 API,可能
會用到圖形用戶界面、控件等函數和對象,可能需要在界面上繪製圖像處理多媒體信息等,
還包括進行網絡通信開發等。
查看 Windows 數據類型的定義可以看到,所有的 Windows 數據類型都是由 C 數據類型經
過類型重定義得到的。如 DWORD 實質上就是 unsigned long 數據類型,32 位的無符號整型
所有的 Windows 數據類型都是通過這種方式在 SDK 的頭文件中進行定義的,它們都
是來源於標準 C 的數據類型。
而實際上 VC 編譯器是一個完整的 C 編譯器,此外並沒有過多的擴展。Windows 數據類
型也不是 VC 的內建類型,而從標準 C 類型重定義得到。