_variant_t转化成char* ch;
ch = (char*)(_bstr_t)vt;

=================================
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;

转载于:https://www.cnblogs.com/aoyihuashao/archive/2009/12/14/1623862.html

VARIANT 、_variant_t 与 COleVariant相关推荐

  1. tagVARIANT、VARIANT、_variant_t和COleVariant

    tagVARIANT是一个结构体struct: C++ Code: tagVARIANT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 2 ...

  2. Cstring转LPWSTR/LPCWSTR..BSTR、LPSTR、LPWSTR、CString、VARIANT、COleVariant 、_variant_t、CComBSTR、_bstr_t .

    //方法一  CString str=_T("TestStr");  USES_CONVERSION;  LPWSTR pwStr=new wchar_t[str.GetLengt ...

  3. BSTR、LPSTR、LPWSTR、CString、VARIANT、COleVariant 、_variant_t、CComBSTR、_bstr_t

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! Visu ...

  4. BSTR LPSTR LPWSTR CString VARIANT COleVariant variant t CC

    Visual C++.NET涉及到ATL/ATL Server.MFC和托管C++等多种编程方式,不仅功能强大而且应用广泛.在编程中,我们常常会遇到ANSI.Unicode以及BSTR不同编码类 型的 ...

  5. VARIANT 数据类型

    VARIANT 数据类型在文件OAIDL.IDL中定义如下: [vc中数据类型,对应类为_variant_t] struct tagVARIANT {     union {         stru ...

  6. MFC之COleVariant类

    COleVariant 本质上是一个枚举,用同一种类型来表达不同的子类型.如同boost中的variant. COleVariant类是对VARIANT结构的封装. VARIANT 结构包含两部分.其 ...

  7. MFC之COleVariant

    COleVariant 本质上是一个枚举,用同一种类型来表达不同的子类型.如同boost中的variant. 例子 COleVariant var(3.6f); float v = var.fltVa ...

  8. 【温故而知新】C和C++篇外篇:COleVariant类型

    今天在做一个windows平台的小工具顺便熟悉一下windows开发的一些基础知识,在这个过程中,发现了MFC使用了一种数据类型叫做COleVariant类型,感觉比较新鲜,赶忙到网上查一下,做一下记 ...

  9. VC 中类型转换(转)

    CString->TCHAR*的转化可以用函数GetBuff() 函数原型为:LPTSTR GetBuffer( int nMinBufLength ); CString str("C ...

最新文章

  1. ​全球首个视频实验期刊JOVE征稿:植物微生物组学方法专刊(牛犇、韦中、高峥、王蒙岑)...
  2. 不使用第三个变量,实现交换两个变量的值
  3. Windows x64内核学习笔记(五)—— KPTI(未完待续)
  4. Redhat 停止sendmail的方法
  5. 机器学习——统计学习方法——第1章 统计学习及监督学习概论
  6. linux(Centos5.1)升级至2.6.19内核+L7实现-- 续限P2P软件
  7. [Java] 蓝桥杯BASIC-14 基础练习 时间转换
  8. 机器学习分支:active learning、incremental learning、online machine learning
  9. php人脸识别代码,PHP实现人脸识别技术
  10. C语言快速解决反转链表
  11. Kerberos安装及使用2(Kerberos服务器KDC安装及配置)
  12. 蓝桥杯科学素养题(2020年12月-2021年12月)
  13. 小学-知识与能力【9】
  14. pmp各种比较容易混淆的图
  15. Unity开发笔记(五)—— 制作第四个小游戏《坦克大战》
  16. Docker Jenkins测试邮箱通知报错:553 Mail from must equal authorized user
  17. 博客系统(界面设计)
  18. 深度剖析Linux与Windows系统的区别
  19. Win10系统图片打开方式恢复默认照片查看器
  20. java计算机毕业设计干洗店订单管理系统设计与实现MyBatis+系统+LW文档+源码+调试部署

热门文章

  1. PTA 7-11 全能球员
  2. ROS 无缝漫游教程(方法一)
  3. Xcode 截取手机屏幕并保存在mac上
  4. ssg20 虚拟服务器,SSG20硬件安装和配置指南-JuniperNetworks.PDF
  5. 《Head First设计模式》——榫与卯
  6. 湖南省的计算机专业,湖南省计算机专业试卷
  7. #用python的pygame写一个大富翁游戏(单机版)# 二:地图初始化
  8. ORACLE EBS各模块中文名称及英文缩写对照
  9. 用于PassMark KeyboardTest 的ANSI 104 键盘布局
  10. JQ JS 改变value值不触发change事件