Win32程序数据类型

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

下面这些是和Win32程序共同使用的数据类型BOOL:布尔值,取值为TRUEorFALSEBSTR:32-bit字符指针BYTE:8-bit整数,未带正负号COLORREF:32-bit数值,代表一个颜色值DWORD:32-bit整数,未带正负号LONG:32-bit整数,带正负号LPARAM:32-bit整数,作为窗口函数或callback函数的一个参数LPCSTR:32-bit指针,指向一个常数字符串LPSTR:32-bit指针,指向一个字符串LPCTSTR:32-bit指针,指向一个常数字符串,此字符串可以移植到Unicode和DBCSLPTSTR:32-bit指针,指向一个字符串,此字符串可以移植到Unicode和DBCSLPVOID:32-bit指针,指向一个未指定类型的数据LPRESULT:32-bit数值,作为窗口函数或callback函数的返回值UINT:在Win16中是一个16-bit未带正负号整数,在Win32中是一个32-bit未带正负号整数,WNDPROC:32-bit指针,指向一个窗口函数WORD:16-bit整数,未带正负号WPARAM:窗口函数或callback函数的一个参数,在Win16中是16-bit,在Win32中是32-bit下面这些是MFC独特的数据类型POSITION:一个数值,代表collection对象(例如数组或链表)中的元素位置,常用于MFCcollectionclasses(即数据处理类,如CArray)LPCRECT:32-bit指针,指向一个不变的RECT结构L表示long指针,这是为了兼容Windows3.1等16位操作系统遗留下来的,在win32中以及其他的32为操作系统中,long指针和near指针及far修饰符都是为了兼容的作用。没有实际意义。P表示这是一个指针C表示是一个常量T在Win32环境中,有一个_T宏,这个宏用来表示你的字符是否使用UNICODE,如果你的程序定义了UNICODE或者其他相关的宏,那么这个字符或者字符串将被作为UNICODE字符串,否则就是标准的ANSI字符串。STR表示这个变量是一个字符串。所以LPCTSTR就表示一个指向常固定地址的可以根据一些宏定义改变语义的字符串。同样,LPCSTR就只能是一个ANSI字符串,在程序中我们大部分时间要使用带T的类型定义。LPCTSTR==constTCHAR*MFC/windows基本数据类型详细介绍#defineFALSE0afx.h#defineTRUE1afx.h#defineNULL0afx.htypedefvoidVOIDwinnt.h//短整型typedefunsignedshorttypedefunsignedshortUSHORT;windef.htypedefunsignedshortWORD;windef.htypedefunsignedshortwchar_ttypedefshortSHORT;winnt.h//整型typedefinttypedefintBOOL;//取值为TRUEorFALSEwindef.htypedefintINT;windef.htypedefunsignedintUINT;//定义一个新的Win32数据类型,它会把一个参数强制转换成Windows3.x应用中的16位值或Win32应用中的32位值windef.h//长整型typedeflongtypedefunsignedlongULONG;windef.htypedefunsignedlongDWORD;windef.htypedefDWORDCOLORREF;windef.htypedeflongLONG;winnt.htypedef__int64LONGLONG;winnt.htypedefunsigned__int64ULONGLONG;winnt.htypedefULONGLONGDWORDLONG;winnt.h//浮点型typedeffloatFLOAT;windef.htypedefdoubleDOUBLE;wtypes.h//字符类型typedefchartypedefcharCHAR/CCHAR;winnt.htypedefunsignedcharUCHAR;windef.htypedefunsignedcharBYTE;windef.htypedefwchar_tWCHAR;//声明一个16位的UNICODE字符,用来表示世界上所有已知的书写语言的符号winnt.h//指向字符串的指针类型LP*//UNICODE(WideCharacter)typestypedefwchar_tWCHAR;//wc,16-bitUNICODEcharactertypedef__nullterminatedWCHAR*NWPSTR,*LPWSTR,*PWSTR;typedef__nullterminatedCONSTWCHAR*LPCWSTR,*PCWSTR;//ANSI(Multi-byteCharacter)typestypedefCHAR*PCHAR,*LPCH,*PCH;typedef__nullterminatedCHAR*NPSTR,*LPSTR,*PSTR;//指向Windows字符串(以空字符结束)的32位指针char*typedef__nullterminatedCONSTCHAR*LPCSTR,*PCSTR;//指向Windows常字符串(以空字符结束)的32位指针constchar*//NeutralANSI/UNICODEtypesandmacros//tchar.h#ifdef_UNICODEtypedefwchar_t_TCHAR;typedefwchar_tTCHAR;#elsetypedefchar_TCHAR;typedefcharTCHAR;#endiftypedefLPWSTRPTSTR,LPTSTR;//指向Windows字符串(以空字符结束)的32位指针,用于移植到双字节字符集LPTSTRForUnicodeplatforms,itisLPWSTR,ForANSIandDBCSplatforms,itisLPSTRtypedefLPCWSTRPCTSTR,LPCTSTR;//指向Windows常字符串(以空字符结束)的32位指针constchar*,用于移植到双字节字符集LPCTSTRForUnicodeplatforms,itisLPCWSTR,ForANSIandDBCSplatforms,itisLPCSTRtypedefLPWSTRLP;#define__T(x)xtchar.h//ndef_UNICODE#define_T(x)__T(x)tchar.h#define_TEXT(x)__T(x)tchar.h#define__TEXT(quote)L##quotewinnt.h//r_winnt//以上的_T、__T、_TEXT、__TEXT、L宏使字符串会自动根据工程的版本(ANSI还是UNICODE)进行转化.使代码不需修改自动适应ASNI和UNICODE版本typedefWCHAROLECHAR;wtypes.htypedefOLECHAR*BSTR;unsignedshort*wtypes.h//函数参数、返回值类型typedefUINT_PTRWPARAM;//窗口函数或callback函数的一个参数,在Win16中是16-bit,在Win32中是32-bitwindef.htypedefLONG_PTRLPARAM;//32位窗口函数或callback函数的一个参数windef.htypedefLONG_PTRLRESULT;//32位作为窗口函数或callback函数的返回值windef.h//指向函数的指针类型typedefint(WINAPI*PROC)();PROC//指向回调函数的指针typedefLRESULT(CALLBACK*WNDPROC)(HWND,UINT,WPARAM,LPARAM);//Windows函数调用类型__stdcall#defineCALLBACK__stdcallwindef.h#defineWINAPI__stdcallwindef.h#defineWINAPIV__cdeclwindef.h#defineAPIENTRYWINAPIwindef.h#defineAPIPRIVATE__stdcallwindef.h#definePASCAL__stdcallwindef.h//关于调用宏参考*LPVOID;指向任意类型的指针windef.h下面将介绍一些常用数据类型的使用:我们先定义一些常见类型变量借以说明inti=100;longl=2001;floatf=300.2;doubled=12345.119;charusername[]="女侠程佩君";chartemp[200];char*buf;CStringstr;_variant_tv1;_bstr_tv2;一、其它数据类型转换为字符串短整型(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与CComBSTRCComBSTR、_bstr_t是对BSTR的封装,BSTR是指向字符串的32位指针。char*转换到BSTR可以这样:BSTRb=_com_util::ConvertStringToBSTR("数据");///使用前需要加上头文件comutil.h反之可以使用char*p=_com_util::ConvertBSTRToString(b);六、VARIANT、_variant_t与COleVariantVARIANT的结构可以参考头文件VC98\Include\OAIDL.H中关于结构体tagVARIANT的定义。对于VARIANT变量的赋值:首先给vt成员赋值,指明数据类型,再对联合结构中相同数据类型的变量赋值,举个例子:VARIANTva;inta=2001;va.vt=VT_I4;///指明整型数据va.lVal=a;///赋值对于不马上赋值的VARIANT,最好先用VoidVariantInit(VARIANTARGFAR*pvarg);进行初始化,其本质是将vt设置为VT_EMPTY,下表我们列举vt与常用数据的对应关系:unsignedcharbVal;VT_UI1shortiVal;VT_I2longlVal;VT_I4floatfltVal;VT_R4doubledblVal;VT_R8VARIANT_BOOLboolVal;VT_BOOLSCODEsc

1 / 17
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功