VC常用数据类型及使用转换_第1页
VC常用数据类型及使用转换_第2页
VC常用数据类型及使用转换_第3页
VC常用数据类型及使用转换_第4页
VC常用数据类型及使用转换_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VC常用数据类型及使用转换VC常用数据类型及使用转换详解原帖地址:一、常用数据类型列表VC常用数据类型列表(1)TypeDefault SizeDescription基础类型全是小写说明:这些基础数据类型对于MFC还是API都是被支持的booleanunsigned 8bit,取值TRUE/FALSE byteunsigned 8bit,整数,输出按字符输出charunsigned 8bit,字符doublesigned 64 bit浮点型floatsigned32 bit浮点型handle_tPrimitive handle type hypersigned 64 bit整型intsigned 32 bit整型longsigned 32 bit整型shortsigned 16 bit整型smallsigned 8bit整型void*32-bit指向未知类型的指针wchar_tunsigned 16 bit16位字符,比char可容纳更多的字符VC常用数据类型列表(2)Win32 API常用数据类型全大写说明:这些Win32API支持的简单数据类型主要是用来定义函数返回值,消息参数,结构成员。这类数据类型大致可以分为五大类:字符型、布尔型、整型、指针型和句柄型(?).总共大概有100多种不同的类型,BOOL/BOOLEAN8bit,TRUE/FALSE布尔变量,实际上是16位UINT BYTEunsigned 8bit8位无符号整数BSTR CComBSTR _bstr_t32 bitBSTR是指向字符串的32位指针是对BSTR的封装是对BSTR的封装CHAR8 bit(ANSI)字符类型COLORREF32 bitRGB颜色值索引整型DWORDunsigned 32 bit整型FLOATfloat型float型HANDLE32位的无符号整数,用作Windows系统所建立的某个对象的句柄,使该句柄就相当于引用该对象。HBITMAPbitmap句柄HBRUSHbrush句柄HCURSORcursor句柄HDC设备上下文句柄HFILEOpenFile打开的File句柄HFONTfont句柄HHOOKhook句柄HKEY注册表键句柄HPENpen句柄HWND32位的无符号整数,用作窗口句柄,使该句柄就相当于引用该窗口。HINSTANCE32位的无符号整数,用作实例句柄VC常用数据类型列表(3)INT-UINT定义一个新的Win32数据类型,它会把一个参数强制转换成Windows3.x应用中的16位值或Win32应用中的32位值LONG-32位带符号整数LONGLONG64位带符号整型LPARAM32 bit消息参数LPBOOLBOOL型指针LPBYTEBYTE型指针LPCOLOREFCOLORREF型指针LPCSTR/LPSTR/PCSTR指向8位(ANSI)字符串类型指针LPCWSTR/LPWSTR/PCWSTR指向16位Unicode字符串类型LPCTSTR/LPTSTR/PCTSTR指向一8位或16位字符串类型指针LPSTR一个32位,指向字符(字符串)数据的指针LPVOID指向一个未指定类型的32位指针LPDWORD指向一个DWORD型指针其他相似类型:LPHANDLE、LPINT、LPLONG、LPWORD、LPRESULT PBOOL、PBOOLEAN、PBYTE、PCHAR、PDWORD、PFLOAT、PHANDLE、PINT、PLONG、PSHORT说明:(1)在16位系统中LP为16bit,P为8bit,在32位系统中都是32bit(此时等价)(2)LPCSTR等中的C指Const,T表示TCHAR模式即可以工作在ANSI下也可UNICODE SHORTusigned整型其他UCHAR、UINT、ULONG、ULONGLONG、USHORT为无符号相应类型TBYTEWCHAR型或者CHAR型TCHARANSI与unicode均可VARIANT _variant_t COleVariant一个结构体参考OAIDL.H _variant_t是VARIANT的封装类COleVariant也是VARIANT的封装类FARPROC指向函数的32位指针WNDPROC指向一个窗口过程的32位指针WCHAR16位Unicode字符型WORD16位无符号整型LOWORD取一个32位整数的低16位,并应强制转换为short int。WPARAM消息参数SIZE_Tsize_t是针对系统定制的一种数据类型,一般是整形,因为C/C+标准只定义一最低的位数,而不是必需的固定位数。而且在内存里,对数的高位对齐存储还是低位对齐存储各系统都不一样。为了提高代码的可移植性,就有必要定义这样的数据类型。一般这种类型都会定义到它具体占几位内存等。当然,有些是编译器或系统已经给定义好的。具体要查看技术手册。MFC独有数据类型下面两个数据类型是微软基础类库中独有的数据类型POSITION标记集合中一个元素的位置的值,被MFC中的集合类所使用LPCRECT指向一个RECT结构体常量(不能修改)的32位指针CString其实是MFC中的一个类同时,为了统一变量的命名,在Windows中,不同类型的变量拥有各自的标准前缀,一般情况如表所示。不同数据类型的前缀前缀数据类型c字符(char)s短整数(short)cb用于定义对象(一般为一个结构)尺寸的整数n整数(integer)sz以message结尾的字符串b字节f BOOL w字(WORD,无符号短整数)l长整数(LONG)h HANDLE(无符号整数)m_类成员变量fn函数(function)dw双字(DWORD,无符号长整数)二、数据类型转换:刚接触VC编程的朋友往往对许多数据类型的转换感到迷惑不解,本文将介绍一些常用数据类型的使用。我们先定义一些常见类型变量借以说明int i=100;long l=2001;float f=300.2;double d=12345.119;char username=;char temp200;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的结构可以参考头文件VC98IncludeOAIDL.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)分解

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论