返回列表 发帖

windows数据类型

ATOM                   原子(原子表中的一个字符串的参考)
BOOL                   布尔变量
BOOLEAN                布尔变量
BYTE                   字节(8位)
CCHAR                  Windows字符
CHAR                   Windows字符
COLORREF               红、绿、蓝(RGB)彩色值(32位)
Const                  变量,该变量的值在执行期间保持为常量
CRITICAL_SECTION       临界段对象
CTRYID                 国名标识符
DLGPROC                指向一个对话框过程的指针
DWORD                  双字(32位)
ENHMFENUMPROC          指向一个应用程序定义的回调函数的指针,该回调函数枚举增强的元文件记录
ENUMRESLANGPROC        指向一个应用程序定义的回调函数的指针,该回调函数枚举资源语言。
ENUMRESNAMEPROC        指向一个应用程序定义的回调函数的指针,该回调函数枚举资源名称。
ENUMRESTYPEPROC        指向一个应用程序定义的回调函数的指针,该回调函数枚举资源类型。  
FARPROC                指向一个回调函数的指针
FLOAT                  浮点变量
FMORDER                32位字体映射值的数组
FONTENUMPROC           指向一个应用程序定义的回调函数的指针,该回调函数枚举字体
GOBJENUMPROC           指向一个应用程序定义的回调函数的指针,该回调函数枚举图形设备接口(GDI)对象
HACCEL                 加速键表句柄
HANDLE                 对象的句柄
HBITMAP                位图句柄
HBRUSH                 画刷句柄
HCONV                  动态数据交换(DDE)会话句柄
HCONVLIST              DDE会话句柄
HCURSOR                光标句柄
HDC                    设备描述表(DC)句柄
HDDEDATA               DDE数据句柄
HDLG                   对话框句柄
HDWP                   延期窗口位置结构句柄
HENHMETAFILE           增强原文件句柄
HFILE                  文件句柄
HFONT                  字体句柄
HGDIOBJ                GDI对象句柄
HGLOBAL                全局内存块句柄
HHOOK                  钩子句柄
HICON                  图标句柄
HINSTANCE              实例句柄
HKEY                   登记关键字句柄
HLOCAL                 局部内存块句柄
HMEMU                  菜单句柄
HMETAFILE              元文件句柄
HMIDIIN                乐器的数字化接口(MIDI)输入文件句柄
HMIDIOUT               MIDI输出文件句柄
HMMIO                  文件句柄
HOOKPROC               指向一个应用程序定义的钩子函数的指针
HPALETTE               调色板句柄
HPEN                   画笔句柄
HRGN                   域句柄
HRSRC                  资源句柄
HSZ                    DDE字符串句柄
HWAVEIN                波形输入文件句柄
HWAVEOUT               波形输出文件句柄
HWINSTA                工作站句柄
HWND                   窗口句柄
INT                    符号整数
LANGID                 语言标识符
LCID                   所在国(Locale)标识符
LCTYPE                 所在国类型
LINEDDAPROC            指向一个回调函数的指针,该回调函数处理行坐标
LONG                   32位符号整数
LP                     指向一个以"NULL"结束的Unicode(TM)字符串的指针
LPARAM                 32位消息参数
LPBOOL                 指向一个布尔变量的指针
LPBYTE                 指向一个字节的指针
LPCCH                  指向一个Windows字符常量的指针
LPCCHOOKPROC           指向一个应用程序定义的钩子函数的指针
LPCFHOOLPROC           指向一个应用程序定义的钩子函数的指针
LPCH                   指向一个Windows字符的指针
LPCOLORREF             指向一个COLORREF值的指针
LPCRITICAL_SECTION     指向一个临界段对象的指针
LPCSTR                 指向一个以"NULL"结束的WINDOWS字符串常量的指针
LPCTSTR                指向一个以"NULL"结束的Unicode或Windows字符串常量的指针        
LPCWCH                 指向一个以"NULL"指向一个以"NULL"结束的Unicode字符常量的指针   
LPCWSTR                指向一个以"NULL"指向一个以"NULL"结束的Unicode字符串常量的指针  
LPDWORD                指向一个无符号双字(32位)的指针                 
LPFRHOOLPROC           指向一个应用程序定义的钩子函数的指针
LPHANDLE               指向一个句柄的指针
LOHANDLER_FUNCTION     指向一个处理程序函数的指针
LPHWAVEIN              指向一个波形输入文件句柄的指针
LPHWAVEOUT             指向一个波形输出文件句柄的指针
LPINT                  指向一个符号整数的指针
LPLONG                 指向一个符号长整数(32位)的指针
LPOFNHOOKPROC          指向一个应用程序定义的钩子函数的指针
LPPRINTHOOKPROC        指向一个应用程序定义的钩子函数的指针
LPSETUPHOOKPROC        指向一个应用程序定义的钩子函数的指针
LPTSTR                 指向一个以NULL结束的Unicode或Windows字符串的指针
LRESULT                消息处理的符号结果
LPVOID                 指向任何类型的指针
LPWSTR                 指向一个以"NULL"结束的Unicode字符串的指针
LUID                   局部唯一的标识符
MCIDEVICEID            媒体控制接口(MCI)设备标识符
MFENUMPROC             指向一个应用程序定义的回调函数的指针,该回调函数枚举元文件记录
MMRESULT               多媒体消息的处理结果
NPSTR                  指向一个以"NULL"结束的Windows字符串的指针
NWPSTR                 指向一个以"NULL"结束的Unicode字符串的指针
PBOOL                  指向一个布尔变量的指针
PBYTE                  指向一个字节的指针
PCCH                   指向一个Windows字符常量的指针
PCH                    指向一个Windows字符的指针
PCHAR                  指向一个Windows字符的指针
PCRITICAL_SECTION      指向一个临界段对象的指针
PCSTR                  指向一个以"NULL"结束的Windows字符串常量的指针
PCWCH                  指向一个Unicode字符常量的指针
PCWSTR                 指向一个以"NULL"结束的Unicode字符串常量的指针
PDWORD                 指向一个无符号双字的指针
PFLOAT                 指向一个浮点变量的指针
PFNCALLBACK            指向一个回调函数的指针
PHANDLE                指向一个句柄的指针
PHANDLER_ROUTINE       指向一个处理程序的指针
PHKEY                  指向一个登记关键字的指针
PINT                   指向一个符号整数的指针
PLONG                  指向一个符号长整数的指针
PLUID                  指向一个局部唯一的表示符(LUID)的指针
PROPENUMPROC           指向一个应用程序定义的回调函数的指针,该回调函数枚举窗口特征
PSHORT                 指向一个符号短整数的指针
PSID                   指向一个加密标识符(SID)的指针
PSTR                   指向一个以"NULL"结束的Windows字符串的指针
PSZ                    指向一个以"NULL"结束的Windows字符串的指针
PTCH                   指向一个Windows或Unicode字符的指针
PTCHAR                 指向一个Windows或Unicode字符的指针
PTSTR                  指向一个以"NULL"结束的Windows或Unicode字符串的指针
PUCHAR                 指向一个无符号Windows字符的指针
PUINT                  指向一个无符号整数的指针
PULONG                 指向一个无符号长整数的指针
PUSHORT                指向一个无符号短整数的指针
PVOID                  指向任何类型的指针
PWCH                   指向一个Unicode字符的指针
PWCHAR                 指向一个Unicode字符的指针
PWORD                  指向一个无符号字的指针
PWSTR                  指向一个以"NULL"结束的Unicode字符串的指针
REGSAM                 登记关键字的加密掩码
SC_HANDLE              服务句柄
SERVICE_STATUS_HANDLE  服务状态值句柄
SHORT                  短整数
SPHANDLE               指向一个句柄的指针
TCHAR                  Unicode或Windows字符
TIMERPROC              指向一个应用程序定义的定时器回调函数的指针
UCHAR                  无符号Windows字符
UINT                   无符号整数
ULONG                  无符号长整数
USHORT                 无符号短整数
VOID                   任何类型
WCHAR                  Unicode字符
WNDENUMPROC            指向一个应用程序定义的回调函数的指针,该回调函数枚举窗口
WNDPROC                指向一个应用程序定义的窗口过程的指针
WORD                   无符号字(16位)
WPARAM                 32位消息参数
YIELDPROC              指向一个输出回调函数的指针

windows数据类型

我们先定义一些常见类型变量借以说明:

int i = 100;
long l = 2001;
float f=300.2;
double d=12345.119;
char username[]="女侠程佩君";
char temp[200];
char *buf;
CString str;
_variant_t v1;
_bstr_t v2;
  一、其它数据类型转换为字符串
  短整型(int)

itoa(i,temp,10);///将i转换为字符串放入temp中,最后一个数字表示十进制
itoa(i,temp,2); ///按二进制方式转换
  长整型(long)

ltoa(l,temp,10);
  二、从其它包含字符串的变量中获取指向该字符串的指针
  CString变量

str = "2008北京奥运";
buf = (LPSTR)(LPCTSTR)str;
  BSTR类型的_variant_t变量

v1 = (_bstr_t)"程序员";
buf = _com_util::ConvertBSTRToString((_bstr_t)v1);
  三、字符串转换为其它数据类型

strcpy(temp,"123");
  短整型(int)

i = atoi(temp);
  长整型(long)

l = atol(temp);
  浮点(double)

d = atof(temp);
  四、其它数据类型转换到CString
  使用CString的成员函数Format来转换,例如:
  整数(int)

str.Format("%d",i);
  浮点数(float)

str.Format("%f",i);
  字符串指针(char *)等已经被CString构造函数支持的数据类型可以直接赋值

str = username;
  五、BSTR、_bstr_t与CComBSTR
  CComBSTR、_bstr_t是对BSTR的封装,BSTR是指向字符串的32位指针。
char *转换到BSTR可以这样: BSTR b=_com_util::ConvertStringToBSTR("数据");///使用前需要加上头文件comutil.h
  反之可以使用

char *p=_com_util::ConvertBSTRToString(b);
  六、VARIANT 、_variant_t 与 COleVariant
  VARIANT的结构可以参考头文件VC98\Include\OAIDL.H中关于结构体tagVARIANT的定义。
  对于VARIANT变量的赋值:首先给vt成员赋值,指明数据类型,再对联合结构中相同数据类型的变量赋值,举个例子:

VARIANT va;
int a=2001;
va.vt=VT_I4;///指明整型数据
va.lVal=a; ///赋值
  对于不马上赋值的VARIANT,最好先用Void VariantInit(VARIANTARG FAR* pvarg);进行初始化,其本质是将vt设置为VT_EMPTY,下表我们列举vt与常用数据的对应关系:

unsigned char bVal; VT_UI1
short iVal; VT_I2
long lVal; VT_I4
float fltVal; VT_R4
double dblVal; VT_R8
VARIANT_BOOL boolVal; VT_BOOL
SCODE scode; VT_ERROR
CY cyVal; VT_CY
DATE date; VT_DATE
BSTR bstrVal; VT_BSTR
IUnknown FAR* punkVal; VT_UNKNOWN
IDispatch FAR* pdispVal; VT_DISPATCH
SAFEARRAY FAR* parray; VT_ARRAY|*
unsigned char FAR* pbVal; VT_BYREF|VT_UI1
short FAR* piVal; VT_BYREF|VT_I2
long FAR* plVal; VT_BYREF|VT_I4
float FAR* pfltVal; VT_BYREF|VT_R4
double FAR* pdblVal; VT_BYREF|VT_R8
VARIANT_BOOL FAR* pboolVal; VT_BYREF|VT_BOOL
SCODE FAR* pscode; VT_BYREF|VT_ERROR
CY FAR* pcyVal; VT_BYREF|VT_CY
DATE FAR* pdate; VT_BYREF|VT_DATE
BSTR FAR* pbstrVal; VT_BYREF|VT_BSTR
IUnknown FAR* FAR* ppunkVal; VT_BYREF|VT_UNKNOWN
IDispatch FAR* FAR* ppdispVal; VT_BYREF|VT_DISPATCH
SAFEARRAY FAR* FAR* pparray; VT_ARRAY|*
VARIANT FAR* pvarVal; VT_BYREF|VT_VARIANT
void FAR* byref; VT_BYREF
   _variant_t是VARIANT的封装类,其赋值可以使用强制类型转换,其构造函数会自动处理这些数据类型。
  例如:

long l=222;
ing i=100;
_variant_t lVal(l);
lVal = (long)i;
  COleVariant的使用与_variant_t的方法基本一样,请参考如下例子:

COleVariant v3 = "字符串", v4 = (long)1999;
CString str =(BSTR)v3.pbstrVal;
long i = v4.lVal;
  七、其它
  对消息的处理中我们经常需要将WPARAM或LPARAM等32位数据(DWORD)分解成两个16位数据(WORD),例如:

LPARAM lParam;
WORD loValue = LOWORD(lParam);///取低16位
WORD hiValue = HIWORD(lParam);///取高16位
  对于16位的数据(WORD)我们可以用同样的方法分解成高低两个8位数据(BYTE),例如:

WORD wValue;
BYTE loValue = LOBYTE(wValue);///取低8位
BYTE hiValue = HIBYTE(wValue);///取高8位

TOP

windows数据类型

一直对VC中文本数据类型有很多疑惑,在用COM的时候,发现疑惑更大了,MS繁杂的字符数据类型,大概也从一个侧面反映了Windows历程的一点足迹和计算机在最近10几年的发展.今天抽个时间总结一下.以下大部分非本人原创,只是收集整理自《深入解析ATL》和《COM本质论》.希望能对这方面有疑惑的同学有帮助.说实话,我感觉掌握了这些,对掌握象VB,JAVA这些语言及其机制就非常容易了,因为他们都比这简单的多,甚至为了追求傻瓜化隐藏了很多功能,这大概就是人们常说的"会了VC学其他的就非常容易"的原因吧~~(另外希望结识更多对COM感兴趣或精通COM的兄弟们,大家一起进步.QQ:119512108) 引: COM中除了C中数字类型,另外有三种:1.文本字符串(BSTR形式);2.VARIANT;3.接口指 针(如智能指针类). 标准文本数据类型的必要:不同或同一COM组件可能运行在使用不同文本数据类型的操作上,并且不同类型的COM组件的相互通信. 一.Windows四种字符数据类型: 1.ANSI :大体与ASCII相同,也称单字节字符集(SBCS).8位.C/C++中使用char数组表示串. 2.Unicode :把字符表示为宽字符(wide-character),16位.C/C++中使用wchar_t数组 表示宽串. 3.MBCS/DBCS :多字节字符集(MBCS),是一种混和长度的字符集,Windows 9x一般使用 MBCS;双字节字符集(DBCS),英文用ANSI表示,中,韩等用Unicode. C/C++中使用unsigned char数组表示串.在VC++中MBCS即为DBCS. 4.TCHAR/_TCHAR :由MS自定义的通用文本数据类型,可以使用不同的编译选项分别映射到ANSI,Unicode,MBCS.它用来编写通用的代码!! C运行库定义了_TCHAR类型,Windows操作系统定义了TCHAR类型,它们是相同的.(ANSI C/C++编译器要求实现者定义的名字以下划线作为前缀,一般去掉"_"就是系统API定义的形式.当没定义_STDC_,表示不需要遵守ANSI标准.) 二.COM字符数据类型: 1.OLECHAR :COM中所有字符都用OLECHAR数据类型表示,COM文本字符串是一个以NUL字符作为结束的OLECHAR字符数组.LPOLECHAR为其指针形式.对于Win32系统,为wchar_t字符类型(即Unicode类型);对于Win16,为char类型;对Solaris OS为wchar_t类型. 2.BSTR :一个包含长度前缀的OLECHAR数组的指针.凡是要在VB,JAVA中用到的接口,都必须使用BSTR字符串类型. 三.(ATL中)字符转换宏: 1. T表示指向Win32 TCHAR字符类型的指针----LPTSTR参数 W表示指向Unicode wchar_t字符类型的指针---LPWSTR参数 A表示指向MBCS/ANSI char字符类型的指针----LPSTR参数 OLE表示指向COM OLECHAR字符类型的指针-----LPOLESTR参数 C表示C/C++中的const修饰符 2.宏格式 :<源类型缩写>2<目标类型缩写>.如A2W宏把一个LPSTR转换为LPWSTR;T2BSTR表示把LPTSTR转换为BSTR. 四.不得不提的VARIANT(变体): VARIANT是一个格式集合,它能使用户在不知道方法所要求的数据类型的情况下向它传递参数(即可以传回一个类型模糊的参数,通过传回的VARIANT的不同参数VT(鉴别器参数)辨别具体数据类型).以鉴别器(discriminator)和集合(union)一起提供给用户. 这里只讨论原理性的东西,具体函数和类的用法,MSDN是最好的老师!

TOP

windows数据类型

FantasiaX(原作)
Windows Data Types
Windows数据类型

  由微软Windows操作系统所支持的各种数据类型是用来定义函数的返回值、函数和消息的参数以及结构体成员(因为Win32程序是用C语言来编写,所以没有“类”这个概念)的。这些数据类型定义了上述元素的尺码(在内存中的,也就是占用内存的字节数)和含义。笔者以前一直不太注意这些东西,结果在程序设计时可谓步履维艰。不同类型的常/变量,在程序用扮演的角色相去甚远,了解这些类型,对剖析程序的工作原理是非常有用的。今天又是周末,我把这些类型列出来,然后把它们的“原形”也找出来——是不是很像“照妖镜”呀。
 下面这张表里包括这些类型:字符类型(character),整数类型(integer),逻辑值类型(布尔型,海峡那边的兄弟们喜欢叫“布林型”,Boolean),指针类型(pointer),句柄型(handle)。其中,字符类型、整数类型和逻辑值(布尔)类型是C语言编译器通用的,也就是与标准C语言一样。大多数指针类型都是以P(Pointer)或者LP(Long Pointer)前缀开头。“句柄”是指被装载进内存的一个资源(本质而言就是指一定范围内的唯一编号)。
  下面这张表是我结合MSDN里的资料制作的,因为自己也是初学,做的还比较粗糙,请大家多多指正:)
Windows数据类型本质类型字节数定义过程(来历)含义
ATOM unsigned short 2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)宏定义…… 窗口的句柄
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结构体指针   RTL_CRITICAL_SECTION *→PRTL_CRITICAL_SECTION,PRTL_CRITICAL_SECTION→PCRITICAL_SECTION CRITICAL_SECTION的指针
PCSTR 静态char *   char→CHAR,CONST CHAR *→PCSTR 静态8位Windows字符(ANSI)无终结字符串指针
PCTSTR 静态wchar_t *   wchar_t→WCHAR,CONST WCHAR *→LPCWSTR,LPCWSTR→PCTSTR 如果UNICODE已定义则为PCWSTR,否则为PCSTR
PCWCH 静态wchar_t *   wchar_t→WCHAR,CONST WCHAR *→PCWCH WCHAR的静态指针
PCWSTR 静态wchar_t *   wchar_t→WCHAR,CONST WCHAR *→PCWSTR 静态16位Windows字符(Unicode)无终结字符串指针
PDWORD unsigned long *   unsigned long→DWORD,DWORD near *→PDWORD DWORD的指针
PFLOAT float *   float→FLOAT,FLOAT *→PFLOAT FLOAT的指针
PHANDLE 指向句柄的指针   void *→HANDLE,HANDLE *→PHANDLE HANDLE的指针
PHKEY 指向HKEY的指针   HKEY__ *→HKEY *→PHKEY HKEY的指针
PINT int *   int near *→PINT INT的指针
PLCID unsigned long *   unsigned long→DWORD,DWORD near *→PDWORD→PLCID LCID的指针
PLONG long *   long→LONG,LONG *→PLONG LONG的指针
PLUID LUID结构体指针   LUID *→PLUID
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.
ULONG_PTR unsigned long 4 unsigned long→ULONG_PTR 无符号LONG_PTR.
ULONG32 unsigned int 2 unsigned int→ULONG32 无符号LONG32
ULONG64 unsigned __int64 4 unsigned __int64→ULONG64 无符号LONG64
ULONGLONG unsigned __int64 4 unsigned __int64→ULONGLONG 64位无符号整数
UNSIGNED 没查到,大家帮忙吧     无符号属性
USHORT unsigned short   unsigned short→USHORT 无符号SHORT类型
VOID void   void→VOID 任何类型
WCHAR wchar_t 2 wchar_t→WCHAR 16位Unicode字符
WINAPI __stdcall 调用 __stdcall→WINAPI 系统函数(API函数)调用约定
WORD unsigned short 2 unsigned short→WORD 16位无符号整数
WPARAM unsigned int * unsigned int→UINT_PTR→WPARAM
注:DECLARE_HANDLE宏的定义如下。
&#35;ifdef STRICT
typedef void *HANDLE;
&#35;define DECLARE_HANDLE(name) struct name&#35;&#35;__ { int unused; }; \
typedef struct name&#35;&#35;__ *name
&#35;else
typedef PVOID HANDLE;
&#35;define DECLARE_HANDLE(name) typedef HANDLE name
&#35;endif
  在列表中,是按前半部分的宏定义而写的,请大家注意。
最后这张表是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 0 到 4,294,967,295
enum * 无 由操作系统决定,即与操作系统的"字长"有关
float 4 无 3.4E +/- 38 (7 digits)
double 8 无 1.7E +/- 308 (15 digits)
long double 8 无 1.7E +/- 308 (15 digits)
wchar_t 2 __wchar_t 0 到 65,535
经过十多个小时的“奋战”,终于完成了:)
  很开心。不过我知道,其中肯定有不完善甚至是错误的地方,请大家多多批评指正,在此先谢过大家。

TOP

返回列表 回复 发帖