Windows数据类型探幽——千回百转你是谁?(1)
生活随笔
收集整理的這篇文章主要介紹了
Windows数据类型探幽——千回百转你是谁?(1)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Windows Data Types Windows數據類型 由微軟Windows操作系統所支持的各種數據類型是用來定義函數的返回值、函數和消息的參數以及結構體成員(因為Win32程序是用C語言來編寫,所以沒有“類”這個概念)的。這些數據類型定義了上述元素的尺碼(在內存中的,也就是占用內存的字節數)和含義。筆者以前一直不太注意這些東西,結果在程序設計時可謂步履維艱。不同類型的常/變量,在程序用扮演的角色相去甚遠,了解這些類型,對剖析程序的工作原理是非常有用的。今天又是周末,我把這些類型列出來,然后把它們的“原形”也找出來——是不是很像“照妖鏡”呀。 下面這張表里包括這些類型:字符類型(character),整數類型(integer),邏輯值類型(布爾型,海峽那邊的兄弟們喜歡叫“布林型”,Boolean),指針類型(pointer),句柄型(handle)。其中,字符類型、整數類型和邏輯值(布爾)類型是C語言編譯器通用的,也就是與標準C語言一樣。大多數指針類型都是以P(Pointer)或者LP(Long Pointer)前綴開頭。“句柄”是指被裝載進內存的一個資源(本質而言就是指一定范圍內的唯一編號)。 下面這張表是我結合MSDN里的資料制作的,因為自己也是初學,做的還比較粗糙,請大家多多指正:)
接下表
本文轉自 水之真諦 51CTO博客,原文鏈接:http://blog.51cto.com/liutiemeng/18905,如需轉載請自行聯系原作者
| Windows數據類型 | 本質類型 | 字節數 | 定義過程(來歷) | 含義 |
| ATOM | unsigned short | 2 | unsigned short→WORD→ATOM | 在Atom表中,一鍵(16位整數)一值(一個String)為一個Atom。 |
| BOOL | int | * | int→BOOL | 邏輯變量,布爾值 (取值為 TRUE 或 FALSE) |
| BOOLEAN | unsigned char | 1 | unsigned char→BYTE→BOOLEAN | 邏輯變量,布爾值 (取值為 TRUE 或 FALSE) |
| BYTE | unsigned char | 1 | unsigned char→BYTE | 字節型,8位。 |
| CALLBACK | __stdcall | 調用 | __stdcall→CALLBACK | 回調函數的調用約定 |
| CHAR | char | 1 | char→CHAR | 8位Windows字符(ANSI) |
| COLORREF | unsigned long | 4 | unsigned long→DWORD→COLORREF | 紅,綠,藍(RGB)值 |
| CONST | const | 關鍵字 | const→CONST | 常量 |
| CRITICAL_SECTION | RTL_CRITICAL_SECTION結構體 | ? | RTL_CRITICAL_SECTION(結構)→CRITICAL_SECTION | Critical-section對象 |
| DWORD | unsigned long | 4 | unsigned long→DWORD | 32位無符號整數 |
| DWORD_PTR | unsigned long | 4 | unsigned long→ULONG_PTR→DWORD_PTR(另有其它路徑) | 略……(用處挺大,不過太長了) |
| DWORD32 | unsigned int | * | unsigned int→DWORD32 | 32位無符號整數 |
| DWORD64 | unsigned __int64 | 8 | unsigned __int64→DWORD64 | 64位無符號整數 |
| FLOAT | float | 4 | float→FLOAT | 浮點數變量 |
| HACCEL | HACCEL__結構體指針 | 由DECLARE_HANDLE(name)宏定義的指向HACCEL__結構體的指針 | 快捷鍵列表的句柄 | |
| HANDLE | void *(一個地址) | void *→HANDLE | 對象的句柄 | |
| HBITMAP | HBITMAP__結構體指針 | 由DECLARE_HANDLE(name)宏定義的指向HBITMAP__結構體的指針 | 位圖的句柄 | |
| HBRUSH | HBRUSH__結構體指針 | 由DECLARE_HANDLE(name)宏定義…… | 畫刷的句柄 | |
| HCONV | HCONV__結構體指針 | 由DECLARE_HANDLE(name)宏定義…… | 動態數據交換(DDE)會話的句柄 | |
| HCONVLIST | HCONVLIST__結構體指針 | 由DECLARE_HANDLE(name)宏定義…… | 動態數據交換(DDE)會話列表的句柄 | |
| HCURSOR | HICON__結構體指針 | HICON__ *→HICON→HCURSOR | 光標的句柄 | |
| HDC | HDC__結構體指針 | 由DECLARE_HANDLE(name)宏定義…… | 設備上下文(DC)的句柄 | |
| HDDEDATA | HDDEDATA__結構體指針 | 由DECLARE_HANDLE(name)宏定義…… | 動態數據交換數據的句柄 | |
| HDESK | HDESK__結構體指針 | 由DECLARE_HANDLE(name)宏定義…… | 桌面(Desktop)的句柄 | |
| HDROP | HDROP__結構體指針 | 由DECLARE_HANDLE(name)宏定義…… | Handle to an internal drop structure. | |
| HDWP | void *(一個地址) | void *→HANDLE→HDWP | Handle to a deferred window position structure. | |
| HENHMETAFILE | HENHMETAFILE__結構體指針 | 由DECLARE_HANDLE(name)宏定義…… | 增強圖元文件的句柄 | |
| HFILE | int | * | int→HFILE | 由OpenFile(而不是CreateFile)打開的文件的句柄. |
| HFONT | HFONT__結構體指針 | 由DECLARE_HANDLE(name)宏定義…… | 字體的句柄 | |
| HGDIOBJ | void near * | void NEAR *→HGDIOBJ | GDI對象的句柄 | |
| HGLOBAL | void *(一個地址) | void *→HANDLE→HGLOBAL | 全局內存塊的句柄 | |
| HHOOK | HHOOK__結構體指針 | 由DECLARE_HANDLE(name)宏定義…… | 句子(hook)的句柄 | |
| HICON | HICON__結構體指針 | 由DECLARE_HANDLE(name)宏定義…… | 圖標的句柄 | |
| HIMAGELIST | _IMAGELIST結構體指針 | _IMAGELIST *→HIMAGELIST | 圖片列表的句柄 | |
| HIMC | HIMC__結構體指針 | 由DECLARE_HANDLE(name)宏定義…… | 輸入上下文的句柄 | |
| HINSTANCE | HINSTANCE__結構體指針 | 由DECLARE_HANDLE(name)宏定義…… | 實例的句柄 | |
| HKEY | HKEY__結構體指針 | 由DECLARE_HANDLE(name)宏定義……(另有一條路徑,一樣) | 注冊表鍵的句柄 | |
| HKL | HKL__結構體指針 | 由DECLARE_HANDLE(name)宏定義…… | 輸入點標識符 | |
| HLOCAL | void *(一個地址) | void *→HANDLE→HLOCAL | 本地內存塊的句柄 | |
| HMENU | HMENU__結構體指針 | 由DECLARE_HANDLE(name)宏定義…… | 菜單的句柄 | |
| HMETAFILE | HMETAFILE__結構體指針 | 由DECLARE_HANDLE(name)宏定義…… | 圖元文件的句柄 | |
| HMODULE | HINSTANCE__結構體指針 | HINSTANCE__*→HINSTANCE→HMODULE | 模塊的句柄。值由模塊的位置來決定。 | |
| HMONITOR | HMONITOR__結構體指針 | 由DECLARE_HANDLE(name)宏定義…… | 顯示器的句柄 | |
| HPALETTE | HPALETTE__結構體指針 | 由DECLARE_HANDLE(name)宏定義…… | 調色板的句柄 | |
| HPEN | HPEN__結構體指針 | 由DECLARE_HANDLE(name)宏定義…… | 畫(線)筆的句柄 | |
| HRGN | HRGN__結構體指針 | 由DECLARE_HANDLE(name)宏定義…… | 區域的句柄 | |
| HRSRC | HRSRC__結構體指針 | 由DECLARE_HANDLE(name)宏定義…… | 資源的句柄 | |
| HSZ | HSZ__結構體指針 | 由DECLARE_HANDLE(name)宏定義…… | 動態數據交換(DDE)字符串的句柄 | |
| HWINSTA | HWINSTA__結構體指針 | 由DECLARE_HANDLE(name)宏定義…… | 窗口狀態的句柄 | |
| HWND | HWND__結構體指針 | 由DECLARE_HANDLE(name)宏定義…… | 窗口的句柄 |
接下表
本文轉自 水之真諦 51CTO博客,原文鏈接:http://blog.51cto.com/liutiemeng/18905,如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的Windows数据类型探幽——千回百转你是谁?(1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mysql 百万级数据优化资料
- 下一篇: Linux系统存储交换机日志