如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
VARIANT与其它类型的相互转换(原创)我想刚做串口通信的同志们可能都遇到过VARIANT类型变量的问题吧。这个问题前两天使我很苦恼,不知道是什么类型,更不知道如何相互转换,今天终于找到了一些信息。我把这些转换的例子贴出来,与大家共享。//DeclarevariableVARIANTvtTest;CStringstrTest;CStringstrOut;intnTest;//CString->VARIANT->CStringstrTest="陈水扁";vtTest.vt=VT_BSTR;vtTest.bstrVal=strTest.AllocSysString();strOut=vtTest.bstrVal;MessageBox(strOut);//int->VARIANT->intvtTest.vt=VT_R8;vtTest.iVal=20;nTest=vtTest.iVal;strOut.Format("%d",nTest);MessageBox(strOut);至于其它类型应该也是用类似的用法吧(哈哈,其它的我也没试)。下面是MSDN中关于这个变量的定义:VARIANTandVARIANTARGThisstructureisusedtodescribeargumentspassedwithinDISPPARAMS,andVARIANTtospecifyvariantdatathatcannotbepassedbyreference.TheVARIANTtypecannothavetheVT_BYREFbitset.typedefstructtagVARIANT{VARTYPEvt;unsignedshortwReserved1;unsignedshortwReserved2;unsignedshortwReserved3;union{unsignedcharbVal;shortiVal;longlVal;floatfltVal;.doubledblVal;VARIANT_BOOLboolVal;SCODEscode;CYcyVal;DATEdate;BSTRbstrVal;IUnknownFAR*punkVal;IDispatchFAR*pdispVal;SAFEARRAYFAR*parray;unsignedcharFAR*pbVal;shortFAR*piVal;longFAR*plVal;floatFAR*pfltVal;doubleFAR*pdblVal;VARIANT_BOOLFAR*pboolVal;SCODEFAR*pscode;CYFAR*pcyVal;DATEFAR*pdate;BSTRFAR*pbstrVal;IUnknownFAR*FAR*ppunkVal;IDispatchFAR*FAR*ppdispVal;SAFEARRAYFAR*FAR*pparray;VARIANTFAR*pvarVal;voidFAR*byref;};};typedefstructFARSTRUCTtagVARIANTVARIANT;typedefstructFARSTRUCTtagVARIANTVARIANTARG;MembersvtwReserved1wReserved2wReserved3bValVT_UI1.iValVT_I2.lValVT_I4.fltValVT_R4.dblValVT_R8.boolValVT_BOOL.scodeVT_ERROR.cyValVT_CY.dateVT_DATE.bstrValVT_BSTR.punkValVT_UNKNOWN.pdispValVT_DISPATCH.parrayVT_ARRAY|*.pbValVT_BYREF|VT_UI1.piValVT_BYREF|VT_I2.plValVT_BYREF|VT_I4.pfltValVT_BYREF|VT_R4.pdblValVT_BYREF|VT_R8.pboolValVT_BYREF|VT_BOOL.pscodeVT_BYREF|VT_ERROR.pcyValVT_BYREF|VT_CY.pdateVT_BYREF|VT_DATE.pbstrValVT_BYREF|VT_BSTR.ppunkVal;VT_BYREF|VT_UNKNOWN.ppdispVal;VT_BYREF|VT_DISPATCH.pparray;VT_ARRAY|*.pvarValVT_BYREF|VT_VARIANT.byrefGener