• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            牽著老婆滿街逛

            嚴(yán)以律己,寬以待人. 三思而后行.
            GMail/GTalk: yanglinbo#google.com;
            MSN/Email: tx7do#yahoo.com.cn;
            QQ: 3 0 3 3 9 6 9 2 0 .

            Windows數(shù)據(jù)類型探幽

            Windows 數(shù)據(jù)類型(一)

            ?

              由微軟 Windows 操作系統(tǒng)所支持的各種數(shù)據(jù)類型是用來(lái)定義函數(shù)的返回值、函數(shù)和消息的參數(shù)以及結(jié)構(gòu)體成員(因?yàn)?/span> Win32 程序是用 C 語(yǔ)言來(lái)編寫(xiě),所以沒(méi)有“類”這個(gè)概念)的。這些數(shù)據(jù)類型定義了上述元素的尺碼(在內(nèi)存中的,也就是占用內(nèi)存的字節(jié)數(shù))和含義。筆者以前一直不太注意這些東西,結(jié)果在程序設(shè)計(jì)時(shí)可謂步履維艱。不同類型的常 / 變量,在程序用扮演的角色相去甚遠(yuǎn),了解這些類型,對(duì)剖析程序的工作原理是非常有用的。今天又是周末,我把這些類型列出來(lái),然后把它們的“原形”也找出來(lái)——是不是很像“照妖鏡”呀。

            ?????? 下面這張表里包括這些類型:字符類型( character ),整數(shù)類型( integer ),邏輯值類型(布爾型,海峽那邊的兄弟們喜歡叫“布林型”, Boolean ),指針類型( pointer ),句柄型( handle )。其中,字符類型、整數(shù)類型和邏輯值(布爾)類型是 C 語(yǔ)言編譯器通用的,也就是與標(biāo)準(zhǔn) C 語(yǔ)言一樣。大多數(shù)指針類型都是以 P Pointer )或者 LP Long Pointer )前綴開(kāi)頭?!熬浔笔侵副谎b載進(jìn)內(nèi)存的一個(gè)資源(本質(zhì)而言就是指一定范圍內(nèi)的唯一編號(hào))。

              下面這張表是我結(jié)合MSDN里的資料制作的,因?yàn)樽约阂彩浅鯇W(xué),做的還比較粗糙,請(qǐng)大家多多指正:)

            Windows數(shù)據(jù)類型 本質(zhì)類型 字節(jié)數(shù) 定義過(guò)程(來(lái)歷) 含義
            ATOM unsigned short 2 unsigned short→WORD→ATOM 在Atom表中,一鍵(16位整數(shù))一值(一個(gè)String)為一個(gè)Atom。
            BOOL int * int→BOOL 邏輯變量,布爾值 (取值為 TRUE 或 FALSE)
            BOOLEAN unsigned char 1 unsigned char→BYTE→BOOLEAN 邏輯變量,布爾值 (取值為 TRUE 或 FALSE)
            BYTE unsigned char 1 unsigned char→BYTE 字節(jié)型,8位。
            CALLBACK __stdcall 調(diào)用 __stdcall→CALLBACK 回調(diào)函數(shù)的調(diào)用約定
            CHAR char 1 char→CHAR 8位Windows字符(ANSI)
            COLORREF unsigned long 4 unsigned long→DWORD→COLORREF 紅,綠,藍(lán)(RGB)值
            CONST const 關(guān)鍵字 const→CONST 常量
            CRITICAL_SECTION RTL_CRITICAL_SECTION結(jié)構(gòu)體 ? RTL_CRITICAL_SECTION(結(jié)構(gòu))→CRITICAL_SECTION Critical-section對(duì)象
            DWORD unsigned long 4 unsigned long→DWORD 32位無(wú)符號(hào)整數(shù)
            DWORD_PTR unsigned long 4 unsigned long→ULONG_PTR→DWORD_PTR(另有其它路徑) 略……(用處挺大,不過(guò)太長(zhǎng)了)
            DWORD32 unsigned int * unsigned int→DWORD32 32位無(wú)符號(hào)整數(shù)
            DWORD64 unsigned __int64 8 unsigned __int64→DWORD64 64位無(wú)符號(hào)整數(shù)
            FLOAT float 4 float→FLOAT 浮點(diǎn)數(shù)變量
            HACCEL HACCEL__結(jié)構(gòu)體指針   由DECLARE_HANDLE(name)宏定義的指向HACCEL__結(jié)構(gòu)體的指針 快捷鍵列表的句柄
            HANDLE void *(一個(gè)地址)   void *→HANDLE 對(duì)象的句柄
            HBITMAP HBITMAP__結(jié)構(gòu)體指針   由DECLARE_HANDLE(name)宏定義的指向HBITMAP__結(jié)構(gòu)體的指針 位圖的句柄
            HBRUSH HBRUSH__結(jié)構(gòu)體指針   由DECLARE_HANDLE(name)宏定義…… 畫(huà)刷的句柄
            HCONV HCONV__結(jié)構(gòu)體指針   由DECLARE_HANDLE(name)宏定義…… 動(dòng)態(tài)數(shù)據(jù)交換(DDE)會(huì)話的句柄
            HCONVLIST HCONVLIST__結(jié)構(gòu)體指針   由DECLARE_HANDLE(name)宏定義…… 動(dòng)態(tài)數(shù)據(jù)交換(DDE)會(huì)話列表的句柄
            HCURSOR HICON__結(jié)構(gòu)體指針   HICON__ *→HICON→HCURSOR 光標(biāo)的句柄
            HDC HDC__結(jié)構(gòu)體指針   由DECLARE_HANDLE(name)宏定義…… 設(shè)備上下文(DC)的句柄
            HDDEDATA HDDEDATA__結(jié)構(gòu)體指針   由DECLARE_HANDLE(name)宏定義…… 動(dòng)態(tài)數(shù)據(jù)交換數(shù)據(jù)的句柄
            HDESK HDESK__結(jié)構(gòu)體指針   由DECLARE_HANDLE(name)宏定義…… 桌面(Desktop)的句柄
            HDROP HDROP__結(jié)構(gòu)體指針   由DECLARE_HANDLE(name)宏定義…… Handle to an internal drop structure.
            HDWP void *(一個(gè)地址)   void *→HANDLE→HDWP Handle to a deferred window position structure.
            HENHMETAFILE HENHMETAFILE__結(jié)構(gòu)體指針   由DECLARE_HANDLE(name)宏定義…… 增強(qiáng)圖元文件的句柄
            HFILE int * int→HFILE 由OpenFile(而不是CreateFile)打開(kāi)的文件的句柄.
            HFONT HFONT__結(jié)構(gòu)體指針   由DECLARE_HANDLE(name)宏定義…… 字體的句柄
            HGDIOBJ void near *   void NEAR *→HGDIOBJ GDI對(duì)象的句柄
            HGLOBAL void *(一個(gè)地址)   void *→HANDLE→HGLOBAL 全局內(nèi)存塊的句柄
            HHOOK HHOOK__結(jié)構(gòu)體指針   由DECLARE_HANDLE(name)宏定義…… 句子(hook)的句柄
            HICON HICON__結(jié)構(gòu)體指針   由DECLARE_HANDLE(name)宏定義…… 圖標(biāo)的句柄
            HIMAGELIST _IMAGELIST結(jié)構(gòu)體指針   _IMAGELIST *→HIMAGELIST 圖片列表的句柄
            HIMC HIMC__結(jié)構(gòu)體指針   由DECLARE_HANDLE(name)宏定義…… 輸入上下文的句柄
            HINSTANCE HINSTANCE__結(jié)構(gòu)體指針   由DECLARE_HANDLE(name)宏定義…… 實(shí)例的句柄

            ?

            續(xù)表

            INT int * int→INT 32位有符號(hào)整數(shù)
            INT_PTR int(_W64 int即__w64 int) * _W64 int→INT_PTR,_W64就是__w64,是為了解決32位與64位編譯器的兼容性而設(shè)置的關(guān)鍵字 用于指針運(yùn)算
            INT32 signed int * signed int→INT32 32位有符號(hào)整數(shù)
            INT64 signed __int64 8 signed __int64→INT64 64位有符號(hào)整數(shù)
            LANGID unsigned short 2 unsigned short→WORD→LANGID 語(yǔ)言標(biāo)識(shí)符
            LCID unsigned long 4 unsigned long→DWORD→LCID Locale identifier.
            LCTYPE unsigned long 4 unsigned long→DWORD→LCTYPE Locale information type.?
            LONG long 4 long→LONG 32位有符號(hào)整數(shù)
            LONG_PTR long 4 _W64 long→LONG_PTR 用于指針運(yùn)算
            LONG32 signed int * signed int→LONG32 32位有符號(hào)整數(shù)
            LONG64 __int64 8 __int64→LONG64 64位有符號(hào)整數(shù)
            LONGLONG __int64 8 __int64→LONGLONG 64位有符號(hào)整數(shù)
            LPARAM long 4 _W64 long→LONG_PTR→LPARAM 消息的參數(shù)
            LPBOOL int *   int→BOOL, BOOL far *→LPBOOL BOOL類型的指針
            LPBYTE unsigned char *   unsigned char→BYTE,BYTE far *→LPBYTE BYTE類型的指針
            LPCOLORREF unsigned long *   unsigned long→WORD,DWORD *→LPCOLORREF 顏色值的指針
            LPCRITICAL_SECTION RTL_CRITICAL_SECTION結(jié)構(gòu)體指針   RTL_CRITICAL_SECTION *PRTL_CRITICAL_SECTION→,PRTL_CRITICAL_SECTION→LPCRITICAL_SECTION CRITICAL_SECTION的指針
            LPCSTR 靜態(tài)char *   char→CHAR,CONST CHAR *→LPCSTR 靜態(tài)8位Windows字符(ANSI)無(wú)終結(jié)字符串指針
            LPCTSTR 靜態(tài)wchar_t *   wchar_t→WCHAR,CONST WCHAR *→LPCWSTR,LPCWSTR→LPCTSTR 如果UNICODE已定義則為L(zhǎng)PCWSTR,否則為L(zhǎng)PCTSTR
            LPCVOID 靜態(tài)void *   CONST void far *→LPCVOID 任何類型的靜態(tài)指針
            LPCWSTR 靜態(tài)wchar_t *   wchar_t→WCHAR,CONST WCHAR *→LPCWSTR 靜態(tài)16位Windows字符(Unicode)無(wú)終結(jié)字符串指針
            LPDWORD unsigned long *   unsigned long→DWORD,DWORD far *→LPDWORD DWORD的指針
            LPHANDLE 指向句柄的指針   void *→HANDLE,HANDLE FAR *→LPHANDLE HANDLE的指針
            LPINT int *   int far *→LPINT INT的指針
            LPLONG long *   long far *→LPLONG LONG的指針
            LPSTR char *   char→CHAR,CHAR *→LPSTR 8位Windows字符(ANSI)無(wú)終結(jié)字符串指針
            LPTSTR wchar_t *   wchar_t WCHAR,WCHAR *→LPWSTR,LPWSTR→LPTSTR An LPWSTR if UNICODE is defined, an LPSTR otherwise.
            LPVOID void *   void far *→LPVOID 任何類型的指針
            LPWORD unsigned short *   unsigned short→WORD,WORD far *→LPWORD WORD的指針
            LPWSTR wchar_t *   wchar_t→WCHAR,WCHAR *→LPWSTR 16位Windows字符(ANSI)無(wú)終結(jié)字符串指針
            LRESULT long 4 _W64 long→LONG_PTR→LRESULT 有符號(hào)的消息處理結(jié)果
            LUID LUID結(jié)構(gòu)     局部唯一標(biāo)識(shí)符
            PBOOL int *   int→BOOL,BOOL near *→PBOOL BOOL的指針
            PBOOLEAN unsigned char *   unsigned char→BYTE→BOOLEAN,BOOLEAN *→PBOOLEAN BOOL的指針
            PBYTE unsigned char *   unsigned char→BYTE,BYTE near *→PBYTE BYTE的指針
            PCHAR char *   char→CHAR,CHAR *→PCHAR CHAR的指針
            PCRITICAL_SECTION RTL_CRITICAL_SECTION結(jié)構(gòu)體指針  

            ?

            續(xù)表

            POINTER_32 void *   void *→POINTER_32 32位指針(詳解略)
            POINTER_64 void *   void *→POINTER_64 64位指針(詳解略)
            PSHORT short *   short→SHORT,SHORT *→PSHORT SHORT的指針
            PSTR char *   char→CHAR,CHAR *→PSTR 8位Windows字符(ANSI)無(wú)終結(jié)字符串指針
            PTBYTE wchar_t *   wchar_t→WCHAR,WCHAR *→PTBYTE TBYTE的指針
            PTCHAR wchar_t *   wchar_t→WCHAR,WCHAR *→PTCHAR TCHAR的指針
            PTSTR wchar_t *   wchar_t→WCHAR,WCHAR *→LPWSTR→PTSTR PWSTR if UNICODE is defined, a PSTR otherwise.
            PTBYTE wchar_t *   wchar_t→WCHAR,WCHAR *→PTBYTE TBYTE的指針
            PTCHAR wchar_t *   wchar_t→WCHAR,WCHAR *→PTCHAR TCHAR的指針
            PTSTR wchar_t *   wchar_t→WCHAR,WCHAR *→LPWSTR→PTSTR A PWSTR if UNICODE is defined, a PSTR otherwise.
            PUCHAR unsigned char *   unsigned char→UCHAR,UCHAR *→PUCHAR UCHAR的指針
            PUINT unsigned int *   unsigned int *→PUINT(呵呵,為什么不用UINT*來(lái)定義呢?) UINT的指針
            PULONG unsigned long *   unsigned long→ULONG,ULONG *→PULONG ULONG的指針
            PUSHORT unsigned short *   unsigned short→USHORT,USHORT *→PUSHORT USHORT的指針
            PVOID void *   void *→PVOID 任何類型的指針
            PWCHAR wchar_t *   wchar_t→WCHAR,WCHAR *→PWCHAR WCHAR的指針
            PWORD unsigned short *   unsigned short→WORD,WORD near *→PWORD WORD的指針
            PWSTR wchar_t *   wchar_t→WCHAR,WCHAR *→PWSTR 16位Windows字符(Unicode)無(wú)終結(jié)字符串指針
            REGSAM unsigned long   unsigned long→DWORD→ACCESS_MASK→REGSAM 注冊(cè)表值的安全訪問(wèn)掩碼
            SC_HANDLE SC_HANDLE__結(jié)構(gòu)體指針   由DECLARE_HANDLE(name)宏定義…… Handle to a service control manager database.
            SC_LOCK void *   void far *→LPVOID→SC_LOCK Handle to a service control manager database lock.?
            SERVICE_STATUS_HANDLE SERVICE_STATUS_HANDLE__結(jié)構(gòu)體指針   由DECLARE_HANDLE(name)宏定義…… Handle to a service status value.?
            SHORT short 2 short→SHORT 短整數(shù)類型(16位)
            SIZE_T unsigned long 4 unsigned long→ULONG_PTR→SIZE_T 指針可指向的最大字節(jié)數(shù)
            SSIZE_T long   _W64 long→LONG_PTR→SSIZE_T 有符號(hào)SIZE_T.
            TBYTE wchar_t 2 wchar_t→WCHAR,WCHAR→TBYTE 如果UNICODE已定義則為WCHAR,否則為CHAR
            TCHAR wchar_t 2 wchar_t→WCHAR,WCHAR→TCHAR 如果UNICODE已定義則為WCHAR,否則為CHAR
            UCHAR unsigned char 1 unsigned char→UCHAR 無(wú)符號(hào)CHAR
            UINT unsigned int * unsigned int→UINT 無(wú)符號(hào)INT
            UINT_PTR unsigned int * unsigned int→UINT_PTR 無(wú)符號(hào)INT_PTR.
            UINT32 unsigned int 2 unsigned int→UINT32 無(wú)符號(hào)INT32.
            UINT64 unsigned __int64 4 unsigned __int64→UINT64 無(wú)符號(hào)INT64.
            ULONG unsigned long 4 unsigned long→ULONG 無(wú)符號(hào)LONG.

            ?

            最后這張表是Visual C++ 7.1編譯器支持的數(shù)據(jù)類型,也就是Windows各種數(shù)據(jù)類型的“根源”了。

            數(shù)據(jù)類型名稱 字節(jié)數(shù) 別名 取值范圍
            int * signed,signed int 由操作系統(tǒng)決定,即與操作系統(tǒng)的"字長(zhǎng)"有關(guān)
            unsigned int * unsigned 由操作系統(tǒng)決定,即與操作系統(tǒng)的"字長(zhǎng)"有關(guān)
            __int8 1 char,signed char –128 到 127
            __int16 2 short,short int,signed short int –32,768 到 32,767
            __int32 4 signed,signed int –2,147,483,648 到 2,147,483,647
            __int64 8 無(wú) –9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
            bool 1 無(wú) false 或 true
            char 1 signed char –128 到 127
            unsigned char 1 無(wú) 0 到 255
            short 2 short int,signed short int –32,768 到 32,767
            unsigned short 2 unsigned short int 0 到 65,535
            long 4 long int,signed long int –2,147,483,648 到 2,147,483,647
            long long 8 none (but equivalent to __int64) –9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
            unsigned long 4 unsigned long int

            posted on 2006-04-29 18:55 楊粼波 閱讀(682) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 文章收藏

            久久综合九色综合网站| 人妻少妇精品久久| 久久国产精品二国产精品| 怡红院日本一道日本久久| 综合久久给合久久狠狠狠97色| 中文无码久久精品| 久久综合狠狠色综合伊人| 日韩亚洲国产综合久久久| 久久综合综合久久综合| 久久国产综合精品五月天| 亚洲精品白浆高清久久久久久| 久久国产乱子伦精品免费强| 亚洲国产小视频精品久久久三级| 久久精品国产亚洲77777| 伊人久久大香线蕉精品不卡| 狠色狠色狠狠色综合久久| 久久综合鬼色88久久精品综合自在自线噜噜 | 午夜精品久久久久久影视777| 久久99精品久久久久久动态图| 久久涩综合| 久久免费国产精品一区二区| 伊人久久大香线蕉综合Av| 久久久精品无码专区不卡| 99久久久精品免费观看国产| 99久久做夜夜爱天天做精品| 国产精品VIDEOSSEX久久发布| 无码人妻久久一区二区三区免费丨 | 精品久久国产一区二区三区香蕉 | 三级韩国一区久久二区综合| 精品人妻久久久久久888| 久久笫一福利免费导航| 国产叼嘿久久精品久久| 久久久久青草线蕉综合超碰 | 性做久久久久久久| 亚洲国产小视频精品久久久三级| 久久久久免费精品国产| 欧美亚洲色综久久精品国产| 久久99这里只有精品国产| 久久精品无码一区二区三区免费| 久久se精品一区二区| 久久夜色精品国产欧美乱|