求教Variant~~ variant到底是个什么东西?.vt属性可以改变存储的值?怎么存数组呢?一个VARIANT对象可以存许多不同类型的数据吗?为啥在VC6里,看不到给VARIANT赋值的结果呢.. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你可以看出是模板类。支持类型有以下几种Constructs a _variant_t object._variant_t( ) throw( );_variant_t( const VARIANT& varSrc );_variant_t( const VARIANT* pVarSrc );_variant_t( const _variant_t& var_t_Src );_variant_t( VARIANT& varSrc, bool fCopy );_variant_t( short sSrc, VARTYPE vtSrc = VT_I2 );_variant_t( long lSrc, VARTYPE vtSrc = VT_I4 );_variant_t( float fltSrc ) throw( );_variant_t( double dblSrc, VARTYPE vtSrc = VT_R8 );_variant_t( const CY& cySrc ) throw( );_variant_t( const _bstr_t& bstrSrc );_variant_t( const wchar_t *wstrSrc );_variant_t( const char* strSrc );_variant_t( IDispatch* pDispSrc, bool fAddRef = true ) throw( );_variant_t( bool bSrc ) throw( );_variant_t( IUnknown* pIUknownSrc, bool fAddRef = true ) throw( );_variant_t( const DECIMAL& decSrc ) throw( );_variant_t( BYTE bSrc ) throw( );variant_t( char cSrc) throw();_variant_t( unsigned short usSrc) throw();_variant_t( unsigned long ulSrc) throw();_variant_t( int iSrc) throw();_variant_t( unsigned int uiSrc) throw();_variant_t( __int64 i8Src) throw();_variant_t( unsigned __int64 ui8Src) throw(); VARIANT 表示一个4字节长的整数VARIANT v; v.vt=VT_I4; v.lVal=100; VARIANT 表示布尔值“真”VARIANT v; v.vt=VT_BOOL; v.boolVal=VARIANT_TRUE; VARIANT 其实就是一个结构体,你自己可以查下它的定义 typedef struct tagVARIANT VARIANT;struct tagVARIANT { union { struct __tagVARIANT { VARTYPE vt; // typedef unsigned short VARTYPE WORD wReserved1; WORD wReserved2; WORD wReserved3; union { LONGLONG llval; // VT_I8. LONG lVal; // VT_I4. BYTE bVal; // VT_UI1. SHORT iVal; // VT_I2. FLOAT fltVal; // VT_R4. DOUBLE dblVal; // VT_R8. VARIANT_BOOL boolVal; // VT_BOOL. _VARIANT_BOOL bool; SCODE scode; // VT_ERROR. CY cyVal; // VT_CY. DATE date; // VT_DATE. BSTR bstrVal; // VT_BSTR. IUnknown * punkVal; // VT_UNKNOWN. IDispatch * pdispVal; // VT_DISPATCH. SAFEARRAY * parray; // VT_ARRAY|*. BYTE * pbVal; // VT_BYREF|VT_UI1. SHORT * piVal; // VT_BYREF|VT_I2. LONG * plVal; // VT_BYREF|VT_I4. LONGLONG * pllVal; // VT_BYREF|VT_I8. FLOAT * pfltVal; // VT_BYREF|VT_R4. DOUBLE * pdblVal; // VT_BYREF|VT_R8. VARIANT_BOOL * pboolVal; // VT_BYREF|VT_BOOL. _VARIANT_BOOL * pbool; SCODE * pscode; // VT_BYREF|VT_ERROR. CY * pcyVal; // VT_BYREF|VT_CY. DATE * pdate; // VT_BYREF|VT_DATE. BSTR * pbstrVal; // VT_BYREF|VT_BSTR. IUnknown ** ppunkVal; // VT_BYREF|VT_UNKNOWN. IDispatch ** ppdispVal; // VT_BYREF|VT_DISPATCH. SAFEARRAY ** pparray; // VT_BYREF|VT_ARRAY. VARIANT * pvarVal; // VT_BYREF|VT_VARIANT. PVOID * byref; // Generic ByRef. CHAR cVal; // VT_I1. USHORT uiVal; // VT_UI2. ULONG ulVal; // VT_UI4. ULONGLONG ullVal; // VT_UI8. INT intVal; // VT_INT. UINT uintVal; // VT_UINT. DECIMAL * pdecVal // VT_BYREF|VT_DECIMAL. CHAR * pcVal; // VT_BYREF|VT_I1. USHORT * puiVal; // VT_BYREF|VT_UI2. ULONG * pulVal; // VT_BYREF|VT_UI4. ULONGLONG * pullVal; // VT_BYREF|VT_UI8. INT * pintVal; // VT_BYREF|VT_INT. UINT * puintVal; // VT_BYREF|VT_UINT. struct __tagBRECORD { PVOID pvRecord; IRecordInfo *pRecInfo; } __VARIANT_NAME_4; } __VARIANT_NAME_3; } __VARIANT_NAME_2; DECIMAL decVal; } __VARIANT_NAME_1;};给VARIANT变量的赋值的时候,首先给vt成员赋值,指定类型,再对union中相同数据类型的变量赋值,VARIANT va;int a=2001;va.vt=VT_I4; // 指明整型数据va.lVal=a; // 赋值 VS08的date time picker控件和SQL server数据库时间段查询问题? FindFirstFile()的一个问题。 简单问题,C++类的成员变量默认什么属性? SDI 中在其他類中如何訪問視圖中的成員變量? ocx注册的问题 简单问题,各位不要嫌分少啊? 没人试过调用存储过程吗? 如何精确定位控件的大小?谢谢~~~ 如果把回调函数类型从pascal改为c,可以吗,必须是pascal吗 一个疑问? 通过代码设置 禁止运行 activex控件,但是打开网站时总会弹出 模态对话框,如何取消? 给TAB中的选项卡添加工具栏
Constructs a _variant_t object.
_variant_t( ) throw( );_variant_t(
const VARIANT& varSrc
);_variant_t(
const VARIANT* pVarSrc
);_variant_t(
const _variant_t& var_t_Src
);_variant_t(
VARIANT& varSrc,
bool fCopy
);_variant_t(
short sSrc,
VARTYPE vtSrc = VT_I2
);_variant_t(
long lSrc,
VARTYPE vtSrc = VT_I4
);_variant_t(
float fltSrc
) throw( );_variant_t(
double dblSrc,
VARTYPE vtSrc = VT_R8
);_variant_t(
const CY& cySrc
) throw( );_variant_t(
const _bstr_t& bstrSrc
);_variant_t(
const wchar_t *wstrSrc
);_variant_t(
const char* strSrc
);_variant_t(
IDispatch* pDispSrc,
bool fAddRef = true
) throw( );_variant_t(
bool bSrc
) throw( );_variant_t(
IUnknown* pIUknownSrc,
bool fAddRef = true
) throw( );_variant_t(
const DECIMAL& decSrc
) throw( );_variant_t(
BYTE bSrc
) throw( );variant_t(
char cSrc
) throw();_variant_t(
unsigned short usSrc
) throw();_variant_t(
unsigned long ulSrc
) throw();_variant_t(
int iSrc
) throw();_variant_t(
unsigned int uiSrc
) throw();_variant_t(
__int64 i8Src
) throw();_variant_t(
unsigned __int64 ui8Src
) throw();
VARIANT v; v.vt=VT_I4; v.lVal=100; VARIANT 表示布尔值“真”
VARIANT v; v.vt=VT_BOOL; v.boolVal=VARIANT_TRUE;
给VARIANT变量的赋值的时候,首先给vt成员赋值,指定类型,再对union中相同数据类型的变量赋值,VARIANT va;int a=2001;va.vt=VT_I4; // 指明整型数据va.lVal=a; // 赋值