天天看點

Windows資料類型探幽——千回百轉你是誰?(1)

<b>Windows Data Types</b>

<b></b>

Windows資料類型

  由微軟Windows作業系統所支援的各種資料類型是用來定義函數的傳回值、函數和消息的參數以及結構體成員(因為Win32程式是用C語言來編寫,是以沒有“類”這個概念)的。這些資料類型定義了上述元素的尺碼(在記憶體中的,也就是占用記憶體的位元組數)和含義。筆者以前一直不太注意這些東西,結果在程式設計時可謂步履維艱。不同類型的常/變量,在程式用扮演的角色相去甚遠,了解這些類型,對剖析程式的工作原理是非常有用的。今天又是周末,我把這些類型列出來,然後把它們的“原形”也找出來——是不是很像“照妖鏡”呀。

       下面這張表裡包括這些類型:字元類型(character),整數類型(integer),邏輯值類型(布爾型,海峽那邊的兄弟們喜歡叫“布林型”,Boolean),指針類型(pointer),句柄型(handle)。其中,字元類型、整數類型和邏輯值(布爾)類型是C語言編譯器通用的,也就是與标準C語言一樣。大多數指針類型都是以<b>P</b>(Pointer)或者<b>LP</b>(Long Pointer)字首開頭。“句柄”是指被裝載進記憶體的一個資源(本質而言就是指一定範圍内的唯一編号)。

  下面這張表是我結合MSDN裡的資料制作的,因為自己也是初學,做的還比較粗糙,請大家多多指正:)

本質類型

位元組數

定義過程(來曆)

含義

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

BYTE

unsigned char→BYTE

位元組型,8位。

CALLBACK

__stdcall

調用

__stdcall→CALLBACK

回調函數的調用約定

CHAR

char

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→DWORD

32位無符号整數

DWORD_PTR

unsigned long→ULONG_PTR→DWORD_PTR(另有其它路徑)

略……(用處挺大,不過太長了)

DWORD32

unsigned int

unsigned int→DWORD32

DWORD64

unsigned __int64

8

unsigned __int64→DWORD64

64位無符号整數

FLOAT

float

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__結構體指針

動态資料交換(DDE)會話的句柄

HCONVLIST

HCONVLIST__結構體指針

動态資料交換(DDE)會話清單的句柄

HCURSOR

HICON__結構體指針

HICON__ *→HICON→HCURSOR

光标的句柄

HDC

HDC__結構體指針

裝置上下文(DC)的句柄

HDDEDATA

HDDEDATA__結構體指針

動态資料交換資料的句柄

HDESK

HDESK__結構體指針

桌面(Desktop)的句柄

HDROP

HDROP__結構體指針

Handle to an internal drop structure.

HDWP

void *→HANDLE→HDWP

Handle to a deferred window position structure.

HENHMETAFILE

HENHMETAFILE__結構體指針

增強圖元檔案的句柄

HFILE

int→HFILE

由OpenFile(而不是CreateFile)打開的檔案的句柄.

HFONT

HFONT__結構體指針

字型的句柄

HGDIOBJ

void near *

void NEAR *→HGDIOBJ

GDI對象的句柄

HGLOBAL

void *→HANDLE→HGLOBAL

全局記憶體塊的句柄

HHOOK

HHOOK__結構體指針

句子(hook)的句柄

HICON

圖示的句柄

HIMAGELIST

_IMAGELIST結構體指針

_IMAGELIST *→HIMAGELIST

圖檔清單的句柄

HIMC

HIMC__結構體指針

輸入上下文的句柄

HINSTANCE

HINSTANCE__結構體指針

執行個體的句柄

HKEY

HKEY__結構體指針

由DECLARE_HANDLE(name)宏定義……(另有一條路徑,一樣)

系統資料庫鍵的句柄

HKL

HKL__結構體指針

輸入點辨別符

HLOCAL

void *→HANDLE→HLOCAL

本地記憶體塊的句柄

HMENU

HMENU__結構體指針

菜單的句柄

HMETAFILE

HMETAFILE__結構體指針

圖元檔案的句柄

HMODULE

HINSTANCE__*→HINSTANCE→HMODULE

子產品的句柄。值由子產品的位置來決定。

HMONITOR

HMONITOR__結構體指針

顯示器的句柄

HPALETTE

HPALETTE__結構體指針

調色闆的句柄

HPEN

HPEN__結構體指針

畫(線)筆的句柄

HRGN

HRGN__結構體指針

區域的句柄

HRSRC

HRSRC__結構體指針

資源的句柄

HSZ

HSZ__結構體指針

動态資料交換(DDE)字元串的句柄

HWINSTA

HWINSTA__結構體指針

視窗狀态的句柄

HWND

HWND__結構體指針

視窗的句柄

接下表

本文轉自 水之真谛 51CTO部落格,原文連結:http://blog.51cto.com/liutiemeng/18905,如需轉載請自行聯系原作者

繼續閱讀