【C++】VARTYPEについて

C++のVARIANT型のタイプ取得は、vt(VARTYPE)で参照できる。

VARTYPEの種類とデータの入り方について。

VARTYPEの種類

VARTYPEは、wtypes.hに定義されている。種類は以下の通り。

名前 説明
VT_EMPTY 0 値が未定義であることを示す。
VT_NULL 1 NULL 値. SQL の NULL 相当
VT_I2 2 short 型
VT_I4 3 long 型 (32bit). COM では 32bit 整数は LONG と定義される。
VT_R4 4 float 型
VT_R8 5 double 型
VT_CY 6 CURRENCY 型
VT_DATE 7 DATE 型
VT_BSTR 8 BSTR 型文字列
VT_DISPATCH 9 IDispatch ポインタ
VT_ERROR 10 SCODE 型
VT_BOOL 11 ブール型
VT_VARIANT 12 VARIANT のポインタ
VT_UNKNOWN 13 IUnknown ポインタ
VT_DECIMAL 14 10進数
VT_I1 16 char 型
VT_UI1 17 BYTE 型
VT_UI2 18 unsigned short 型
VT_UI4 19 unsigned long 型 (32-bit)
VT_I8 20 64-bit 整数型 (LONG LONG)
VT_UI8 21 64-bit unsigned integer.
VT_INT 22 整数
VT_UINT 23 符号なしの整数
VT_VOID 24 C の void 型
VT_HRESULT 25 HRESULT 型
VT_PTR 26 ポインタ型
VT_SAFEARRAY 27 SAFEARRAY 型. VARIANT の中では無効 (エラー) になる。
VT_CARRAY 28 C スタイル配列
VT_USERDEFINED 29 ユーザ定義型
VT_LPSTR 30 NULL 終端された文字列
VT_LPWSTR 31 NULL 終端されたワイド文字列
VT_RECORD 36 ユーザ定義型
VT_INT_PTR 37
VT_UINT_PTR 38
VT_FILETIME 64 FILETIME 型
VT_BLOB 65 Indicates length prefixed bytes.
VT_STREAM 66 Indicates that the name of a stream follows.
VT_STORAGE 67 Indicates that the name of a storage follows.
VT_STREAMED_OBJECT 68 Indicates that a stream contains an object.
VT_STORED_OBJECT 69 Indicates that a storage contains an object.
VT_BLOB_OBJECT 70 Indicates that a blob contains an object.
VT_CF 71 Clipboard フォーマット
VT_CLSID 72 クラスID
VT_VERSIONED_STREAM 73
VT_BSTR_BLOB 0xfff
VT_VECTOR 0x1000 Indicates a simple, counted array.
VT_ARRAY 0x2000 SAFEARRAY のポインタ
VT_BYREF 0x4000 参照型であることを示す。
VT_RESERVED 0x8000
VT_ILLEGAL 0xffff
VT_ILLEGALMASKED 0xfff
VT_TYPEMASK 0xfff

データの入り方

VARTYPEは、上記複数種類が入ることがある。
その場合、データはORとなる。

VT_ARRAY | VT_I8
8212(0x2000 + 20(0x0014) = 0x2014)

投稿者: Output48

中学生の時に初めてHTMLに触れてからホームページ制作を独学で始める。 ベンチャー企業の営業、大手企業のPG・SEを経て、独立。 現在はとある企業のCTOと、変な名前の会社の社長をしてる。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください