【温故而知新】C和C++篇外篇:COleVariant类型
来源:互联网 发布:从零开始学mt4编程 编辑:程序博客网 时间:2024/03/29 17:06
今天在做一个windows平台的小工具顺便熟悉一下windows开发的一些基础知识,在这个过程中,发现了MFC使用了一种数据类型叫做COleVariant类型,感觉比较新鲜,赶忙到网上查一下,做一下记录,以备以后查看。
COleVariant类型的变量提供了一种强大的数据封装格式,可以将不同类型的数据用这一种变量表示,并且进行各种格式的转换也很方便。这个变量定义在afxdisp.h 中:
class COleVariant : public tagVARIANT{// Constructorspublic:COleVariant();COleVariant(const VARIANT& varSrc);COleVariant(LPCVARIANT pSrc);COleVariant(const COleVariant& varSrc);COleVariant(LPCTSTR lpszSrc);COleVariant(LPCTSTR lpszSrc, VARTYPE vtSrc); // used to set to ANSI stringCOleVariant(CString& strSrc);COleVariant(BYTE nSrc);COleVariant(short nSrc, VARTYPE vtSrc = VT_I2);COleVariant(long lSrc, VARTYPE vtSrc = VT_I4);COleVariant(const COleCurrency& curSrc);#if (_WIN32_WINNT >= 0x0501) || defined(_ATL_SUPPORT_VT_I8)COleVariant(LONGLONG nSrc);COleVariant(ULONGLONG nSrc);#endifCOleVariant(float fltSrc);COleVariant(double dblSrc);COleVariant(const COleDateTime& timeSrc);COleVariant(const CByteArray& arrSrc);COleVariant(const CLongBinary& lbSrc);COleVariant(LPCITEMIDLIST pidl);// Operationspublic:void Clear();void ChangeType(VARTYPE vartype, LPVARIANT pSrc = NULL);void Attach(VARIANT& varSrc);VARIANT Detach(); void GetByteArrayFromVariantArray(CByteArray& bytes);BOOL operator==(const VARIANT& varSrc) const;BOOL operator==(LPCVARIANT pSrc) const;const COleVariant& operator=(const VARIANT& varSrc);const COleVariant& operator=(LPCVARIANT pSrc);const COleVariant& operator=(const COleVariant& varSrc);const COleVariant& operator=(const LPCTSTR lpszSrc);const COleVariant& operator=(const CString& strSrc);const COleVariant& operator=(BYTE nSrc);const COleVariant& operator=(short nSrc);const COleVariant& operator=(long lSrc);const COleVariant& operator=(const COleCurrency& curSrc);#if (_WIN32_WINNT >= 0x0501) || defined(_ATL_SUPPORT_VT_I8)const COleVariant& operator=(LONGLONG nSrc);const COleVariant& operator=(ULONGLONG nSrc);#endifconst COleVariant& operator=(float fltSrc);const COleVariant& operator=(double dblSrc);const COleVariant& operator=(const COleDateTime& dateSrc);const COleVariant& operator=(const CByteArray& arrSrc);const COleVariant& operator=(const CLongBinary& lbSrc);void SetString(LPCTSTR lpszSrc, VARTYPE vtSrc); // used to set ANSI stringoperator LPVARIANT();operator LPCVARIANT() const;// Implementationpublic:~COleVariant();};
COleVariant类型可以保存的数据有字符串、长短整型、浮点型、布尔型、日期等。从COleVariant变量导出数据也很方便,根据这篇参考文献的描述,可以使用以下方法很方便地将COleVariant转化为字符串:
switch(B.vt){case VT_BSTR: A=V_BSTRT(&B); break;//COleVariant是一个字串case VT_I2: A.Format(_T("%hd"),V_I2(&B));break;//是短整型case VT_I4: A.Format(_T("%d"),V_I4(&B));break;//是长整型case VT_R4: A.Format(_T("%e"),(double)V_R4(&B));break;//是浮点数case VT_R8: A.Format(_T("%e"),V_R8(&B));break;//是浮点数case VT_CY: A=COleCurrency(B).Format();break;//是货币值case VT_DATE: A=COleDateTime(B).Format("%Y-%m-%d");break;//是日期case VT_BOOL: A=V_BOOL(&B)?"True":"False";break;//是布尔值}
0 0
- 【温故而知新】C和C++篇外篇:COleVariant类型
- 【温故而知新】C和C++3:函数
- 【温故而知新】C和C++3:模板
- 【温故而知新】C和C++4:STL概览
- COleVariant和VARIANT转换为CString类型
- 【温故而知新】C和C++和其舞台1、创世纪
- 【温故而知新】C和C++2:C++的数据存储
- 【温故而知新】C和C++5:STL容器技术综述
- 【温故而知新】C和C++6:STL中的vector容器
- 【温故而知新】C和C++7:STL中的deque容器
- 【温故而知新】C和C++8:STL中的list容器
- 【温故而知新】C和C++9:STL中的set容器
- 【温故而知新】C和C++10:关于const限定符
- COleVariant 类型和其他类型之间的转换方法
- char类型和string类型(C++,C#)
- char类型和string类型(C++,C#)
- C#基础(一)(温故而知新)
- C#基础(二)(温故而知新)
- JavaScript学习笔记四——Eval函数
- iOS开发- 隐藏键盘总结
- java加密算法
- 打标、去标工具。
- IOS Label 自适应高度
- 【温故而知新】C和C++篇外篇:COleVariant类型
- c 文件操作函数
- ROWNUM Pseudocolumn
- 实现一屏幕自适应登陆
- (黑马程序员)学习笔记,枚举
- OCP 1Z0 052 53
- mysql常见优化
- 使用do{ } while(0);
- 另辟思路解决 Android 4.0.4 不能监听Home键的问题