VARIANT 、_variant_t 与 COleVariant
_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相关推荐
- 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 ...
- 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 ...
- BSTR、LPSTR、LPWSTR、CString、VARIANT、COleVariant 、_variant_t、CComBSTR、_bstr_t
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! Visu ...
- BSTR LPSTR LPWSTR CString VARIANT COleVariant variant t CC
Visual C++.NET涉及到ATL/ATL Server.MFC和托管C++等多种编程方式,不仅功能强大而且应用广泛.在编程中,我们常常会遇到ANSI.Unicode以及BSTR不同编码类 型的 ...
- VARIANT 数据类型
VARIANT 数据类型在文件OAIDL.IDL中定义如下: [vc中数据类型,对应类为_variant_t] struct tagVARIANT { union { stru ...
- MFC之COleVariant类
COleVariant 本质上是一个枚举,用同一种类型来表达不同的子类型.如同boost中的variant. COleVariant类是对VARIANT结构的封装. VARIANT 结构包含两部分.其 ...
- MFC之COleVariant
COleVariant 本质上是一个枚举,用同一种类型来表达不同的子类型.如同boost中的variant. 例子 COleVariant var(3.6f); float v = var.fltVa ...
- 【温故而知新】C和C++篇外篇:COleVariant类型
今天在做一个windows平台的小工具顺便熟悉一下windows开发的一些基础知识,在这个过程中,发现了MFC使用了一种数据类型叫做COleVariant类型,感觉比较新鲜,赶忙到网上查一下,做一下记 ...
- VC 中类型转换(转)
CString->TCHAR*的转化可以用函数GetBuff() 函数原型为:LPTSTR GetBuffer( int nMinBufLength ); CString str("C ...
最新文章
- ​全球首个视频实验期刊JOVE征稿:植物微生物组学方法专刊(牛犇、韦中、高峥、王蒙岑)...
- 不使用第三个变量,实现交换两个变量的值
- Windows x64内核学习笔记(五)—— KPTI(未完待续)
- Redhat 停止sendmail的方法
- 机器学习——统计学习方法——第1章 统计学习及监督学习概论
- linux(Centos5.1)升级至2.6.19内核+L7实现-- 续限P2P软件
- [Java] 蓝桥杯BASIC-14 基础练习 时间转换
- 机器学习分支:active learning、incremental learning、online machine learning
- php人脸识别代码,PHP实现人脸识别技术
- C语言快速解决反转链表
- Kerberos安装及使用2(Kerberos服务器KDC安装及配置)
- 蓝桥杯科学素养题(2020年12月-2021年12月)
- 小学-知识与能力【9】
- pmp各种比较容易混淆的图
- Unity开发笔记(五)—— 制作第四个小游戏《坦克大战》
- Docker Jenkins测试邮箱通知报错:553 Mail from must equal authorized user
- 博客系统(界面设计)
- 深度剖析Linux与Windows系统的区别
- Win10系统图片打开方式恢复默认照片查看器
- java计算机毕业设计干洗店订单管理系统设计与实现MyBatis+系统+LW文档+源码+调试部署