b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

colevariant_colevariant 哪个类_colevariant用法(3)

电脑杂谈  发布时间:2017-01-21 04:03:09  来源:网络整理

_variant_t是VARIANT的封装类,其赋值可以使用强制类型转换,其构造函数会自动处理这些数据类型。

使用时需加上#include <comdef.h>

例如:

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;

六、其它一些COM数据类型

根据ProgID得到CLSID

HRESULT CLSIDFromProgID( LPCOLESTR lpszProgID,LPCLSID pclsid);
CLSID clsid;
CLSIDFromProgID( L"MAPI.Folder",&clsid);

根据CLSID得到ProgID

WINOLEAPI ProgIDFromCLSID( REFCLSID clsid,LPOLESTR * lplpszProgID); 

例如我们已经定义了 CLSID_IApplication,下面的代码得到ProgID

LPOLESTR pProgID = 0;
ProgIDFromCLSID( CLSID_IApplication,&pProgID);///可以使用pProgID 
CoTaskMemFree(pProgID);//不要忘记释放 

七、ANSI与Unicode

Unicode称为宽字符型字串,COM里使用的都是Unicode字符串。

将ANSI转换到Unicode

(1)通过L这个宏来实现,例如:

 CLSIDFromProgID( L"MAPI.Folder",&clsid);

(2)通过MultiByteToWideChar函数实现转换,例如:

char *szProgID = "MAPI.Folder";
WCHAR szWideProgID[128];
CLSID clsid;
long lLen = MultiByteToWideChar(CP_ACP,0,szProgID,strlen(szProgID),szWideProgID,sizeof(szWideProgID));
szWideProgID[lLen] = '\0'; 

(3)通过A2W宏来实现,例如:

USES_CONVERSION; 
CLSIDFromProgID( A2W(szProgID),&clsid); 

将Unicode转换到ANSI

(1)使用WideCharToMultiByte,例如:

// 假设已经有了一个Unicode 串 wszSomeString... 
char szANSIString [MAX_PATH]; 
WideCharToMultiByte ( CP_ACP, WC_COMPOSITECHECK, wszSomeString, -1, szANSIString, sizeof(szANSIString), NULL, NULL ); 

(2)使用W2A宏来实现,例如:

USES_CONVERSION;
pTemp=W2A(wszSomeString); 

八、其它

对消息的处理中我们经常需要将WPARAM或LPARAM等32位数据(DWORD)分解成两个16位数据(WORD),例如:


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-27731-3.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 罗隐
      罗隐

      万年牢不是合理经济的设计

    热点图片
    拼命载入中...