• <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>

            牽著老婆滿街逛

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

            Windows數據類型探幽

            Windows 數據類型(一)

            ?

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

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

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

            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)宏定義…… 實例的句柄

            ?

            續表

            INT int * int→INT 32位有符號整數
            INT_PTR int(_W64 int即__w64 int) * _W64 int→INT_PTR,_W64就是__w64,是為了解決32位與64位編譯器的兼容性而設置的關鍵字 用于指針運算
            INT32 signed int * signed int→INT32 32位有符號整數
            INT64 signed __int64 8 signed __int64→INT64 64位有符號整數
            LANGID unsigned short 2 unsigned short→WORD→LANGID 語言標識符
            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位有符號整數
            LONG_PTR long 4 _W64 long→LONG_PTR 用于指針運算
            LONG32 signed int * signed int→LONG32 32位有符號整數
            LONG64 __int64 8 __int64→LONG64 64位有符號整數
            LONGLONG __int64 8 __int64→LONGLONG 64位有符號整數
            LPARAM long 4 _W64 long→LONG_PTR→LPARAM 消息的參數
            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結構體指針   RTL_CRITICAL_SECTION *PRTL_CRITICAL_SECTION→,PRTL_CRITICAL_SECTION→LPCRITICAL_SECTION CRITICAL_SECTION的指針
            LPCSTR 靜態char *   char→CHAR,CONST CHAR *→LPCSTR 靜態8位Windows字符(ANSI)無終結字符串指針
            LPCTSTR 靜態wchar_t *   wchar_t→WCHAR,CONST WCHAR *→LPCWSTR,LPCWSTR→LPCTSTR 如果UNICODE已定義則為LPCWSTR,否則為LPCTSTR
            LPCVOID 靜態void *   CONST void far *→LPCVOID 任何類型的靜態指針
            LPCWSTR 靜態wchar_t *   wchar_t→WCHAR,CONST WCHAR *→LPCWSTR 靜態16位Windows字符(Unicode)無終結字符串指針
            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)無終結字符串指針
            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)無終結字符串指針
            LRESULT long 4 _W64 long→LONG_PTR→LRESULT 有符號的消息處理結果
            LUID LUID結構     局部唯一標識符
            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結構體指針  

            ?

            續表

            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)無終結字符串指針
            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)無終結字符串指針
            REGSAM unsigned long   unsigned long→DWORD→ACCESS_MASK→REGSAM 注冊表值的安全訪問掩碼
            SC_HANDLE SC_HANDLE__結構體指針   由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__結構體指針   由DECLARE_HANDLE(name)宏定義…… Handle to a service status value.?
            SHORT short 2 short→SHORT 短整數類型(16位)
            SIZE_T unsigned long 4 unsigned long→ULONG_PTR→SIZE_T 指針可指向的最大字節數
            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編譯器支持的數據類型,也就是Windows各種數據類型的“根源”了。

            數據類型名稱 字節數 別名 取值范圍
            int * signed,signed int 由操作系統決定,即與操作系統的"字長"有關
            unsigned int * unsigned 由操作系統決定,即與操作系統的"字長"有關
            __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 楊粼波 閱讀(683) 評論(0)  編輯 收藏 引用 所屬分類: 文章收藏

            久久久久av无码免费网| 国产精品一区二区久久精品无码| 久久人人爽人人爽人人av东京热| 狠狠色噜噜色狠狠狠综合久久 | 久久国产欧美日韩精品| 国产成人久久精品激情| 欧美日韩中文字幕久久久不卡| 亚洲欧洲久久av| 日本道色综合久久影院| 最新久久免费视频| 国产99久久久国产精品~~牛| 国产精品一区二区久久精品涩爱| 久久青青草原国产精品免费| 久久久久无码精品| 1000部精品久久久久久久久| 无码人妻久久一区二区三区蜜桃 | 久久人人妻人人爽人人爽| AV色综合久久天堂AV色综合在| 精品久久久久久99人妻| 天天躁日日躁狠狠久久 | 超级97碰碰碰碰久久久久最新| 青青青国产成人久久111网站| 久久精品国产久精国产果冻传媒| 国产99精品久久| 成人综合伊人五月婷久久| yy6080久久| 久久久久久精品免费看SSS| 久久精品人妻一区二区三区| 久久电影网一区| 久久婷婷久久一区二区三区| 少妇久久久久久被弄高潮| 久久AV无码精品人妻糸列| 久久综合成人网| 久久99热这里只频精品6| 日本精品久久久久影院日本| 久久国产福利免费| 国产午夜电影久久| 日韩va亚洲va欧美va久久| 亚洲欧美日韩久久精品| 国产成人综合久久精品红| 久久久久久久波多野结衣高潮 |