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

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

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

            Windows數(shù)據(jù)類型 本質(zhì)類型 字節(jié)數(shù) 定義過程(來歷) 含義
            ATOM unsigned short 2 unsigned short→WORD→ATOM 在Atom表中,一鍵(16位整數(shù))一值(一個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 字節(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對象
            DWORD unsigned long 4 unsigned long→DWORD 32位無符號整數(shù)
            DWORD_PTR unsigned long 4 unsigned long→ULONG_PTR→DWORD_PTR(另有其它路徑) 略……(用處挺大,不過太長了)
            DWORD32 unsigned int * unsigned int→DWORD32 32位無符號整數(shù)
            DWORD64 unsigned __int64 8 unsigned __int64→DWORD64 64位無符號整數(shù)
            FLOAT float 4 float→FLOAT 浮點數(shù)變量
            HACCEL HACCEL__結(jié)構(gòu)體指針   由DECLARE_HANDLE(name)宏定義的指向HACCEL__結(jié)構(gòu)體的指針 快捷鍵列表的句柄
            HANDLE void *(一個地址)   void *→HANDLE 對象的句柄
            HBITMAP HBITMAP__結(jié)構(gòu)體指針   由DECLARE_HANDLE(name)宏定義的指向HBITMAP__結(jié)構(gòu)體的指針 位圖的句柄
            HBRUSH HBRUSH__結(jié)構(gòu)體指針   由DECLARE_HANDLE(name)宏定義…… 畫刷的句柄
            HCONV HCONV__結(jié)構(gòu)體指針   由DECLARE_HANDLE(name)宏定義…… 動態(tài)數(shù)據(jù)交換(DDE)會話的句柄
            HCONVLIST HCONVLIST__結(jié)構(gòu)體指針   由DECLARE_HANDLE(name)宏定義…… 動態(tài)數(shù)據(jù)交換(DDE)會話列表的句柄
            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)宏定義…… 動態(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 *(一個地址)   void *→HANDLE→HDWP Handle to a deferred window position structure.
            HENHMETAFILE HENHMETAFILE__結(jié)構(gòu)體指針   由DECLARE_HANDLE(name)宏定義…… 增強圖元文件的句柄
            HFILE int * int→HFILE 由OpenFile(而不是CreateFile)打開的文件的句柄.
            HFONT HFONT__結(jié)構(gòu)體指針   由DECLARE_HANDLE(name)宏定義…… 字體的句柄
            HGDIOBJ void near *   void NEAR *→HGDIOBJ GDI對象的句柄
            HGLOBAL void *(一個地址)   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)宏定義…… 實例的句柄

            ?

            續(xù)表

            INT int * int→INT 32位有符號整數(shù)
            INT_PTR int(_W64 int即__w64 int) * _W64 int→INT_PTR,_W64就是__w64,是為了解決32位與64位編譯器的兼容性而設(shè)置的關(guān)鍵字 用于指針運算
            INT32 signed int * signed int→INT32 32位有符號整數(shù)
            INT64 signed __int64 8 signed __int64→INT64 64位有符號整數(shù)
            LANGID unsigned short 2 unsigned short→WORD→LANGID 語言標(biāo)識符
            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位有符號整數(shù)
            LONG_PTR long 4 _W64 long→LONG_PTR 用于指針運算
            LONG32 signed int * signed int→LONG32 32位有符號整數(shù)
            LONG64 __int64 8 __int64→LONG64 64位有符號整數(shù)
            LONGLONG __int64 8 __int64→LONGLONG 64位有符號整數(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)無終結(jié)字符串指針
            LPCTSTR 靜態(tài)wchar_t *   wchar_t→WCHAR,CONST WCHAR *→LPCWSTR,LPCWSTR→LPCTSTR 如果UNICODE已定義則為LPCWSTR,否則為LPCTSTR
            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)無終結(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)無終結(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)無終結(jié)字符串指針
            LRESULT long 4 _W64 long→LONG_PTR→LRESULT 有符號的消息處理結(jié)果
            LUID LUID結(jié)構(gòu)     局部唯一標(biāo)識符
            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)無終結(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*來定義呢?) 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)無終結(jié)字符串指針
            REGSAM unsigned long   unsigned long→DWORD→ACCESS_MASK→REGSAM 注冊表值的安全訪問掩碼
            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 有符號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 無符號CHAR
            UINT unsigned int * unsigned int→UINT 無符號INT
            UINT_PTR unsigned int * unsigned int→UINT_PTR 無符號INT_PTR.
            UINT32 unsigned int 2 unsigned int→UINT32 無符號INT32.
            UINT64 unsigned __int64 4 unsigned __int64→UINT64 無符號INT64.
            ULONG unsigned long 4 unsigned long→ULONG 無符號LONG.

            ?

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

            數(shù)據(jù)類型名稱 字節(jié)數(shù) 別名 取值范圍
            int * signed,signed int 由操作系統(tǒng)決定,即與操作系統(tǒng)的"字長"有關(guān)
            unsigned int * unsigned 由操作系統(tǒng)決定,即與操作系統(tǒ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 –9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
            bool 1 false 或 true
            char 1 signed char –128 到 127
            unsigned char 1 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) 評論(0)  編輯 收藏 引用 所屬分類: 文章收藏

            久久最近最新中文字幕大全| 欧美亚洲另类久久综合| 伊人久久无码中文字幕| 亚洲va久久久噜噜噜久久| 亚洲AV成人无码久久精品老人| 亚洲va久久久噜噜噜久久狠狠| 久久久久亚洲Av无码专| 久久99国产精品久久久| 大蕉久久伊人中文字幕| 青春久久| 色欲久久久天天天综合网精品| 国产V亚洲V天堂无码久久久| 久久综合狠狠综合久久激情 | 久久国产热这里只有精品| 中文精品99久久国产| 亚洲国产精品一区二区久久hs | 亚洲伊人久久综合影院| 久久综合亚洲色一区二区三区| 亚洲色欲久久久综合网东京热| 99精品国产在热久久无毒不卡| 一本大道加勒比久久综合| 日韩美女18网站久久精品| 亚洲精品无码久久久久久| 国产成人精品久久综合| 欧美精品九九99久久在观看| 热re99久久6国产精品免费| 中文字幕成人精品久久不卡| 2021国产精品午夜久久| 国产精品一区二区久久国产| 久久久99精品成人片中文字幕| 亚洲综合伊人久久大杳蕉| 伊人久久大香线蕉精品| 色综合久久天天综线观看| 精品久久久久久亚洲精品| 久久99精品久久久久久野外| 亚洲国产精品无码久久久不卡| 一本久久久久久久| 伊人久久久AV老熟妇色| 久久精品国产清自在天天线| 久久久久人妻精品一区二区三区| 久久精品视频91|