Класс CComVariant

Этот класс упаковывает VARIANT тип, предоставляя элемент, указывающий тип хранимых данных.

Синтаксис

class CComVariant : public tagVARIANT

Участники

Открытые конструкторы

Имя Описание
CComVariant::CComVariant Конструктор.
CComVariant::~CComVariant Деструктор

Открытые методы

Имя Описание
CComVariant::Attach Присоединяет объект VARIANT к объекту CComVariant .
CComVariant::ChangeType Преобразует объект в CComVariant новый тип.
CComVariant::Clear Очищает CComVariant объект.
CComVariant::Copy Копирует объект VARIANTCComVariant .
CComVariant::CopyTo Копирует содержимое CComVariant объекта.
CComVariant::Detach Отсоединяет базовый VARIANTCComVariant объект от объекта.
CComVariant::GetSize Возвращает размер в количестве байтов содержимого CComVariant объекта.
CComVariant::ReadFromStream Загружается VARIANT из потока.
CComVariant::SetByRef Инициализирует CComVariant объект и задает vt для элемента значение VT_BYREF.
CComVariant::WriteToStream Сохраняет базовый VARIANT объект в потоке.

Общедоступные операторы

Operator Description
CComVariant::operator < Указывает, меньше ли CComVariant объект, чем указанный VARIANT.
CComVariant::operator > Указывает, превышает ли CComVariant объект указанный VARIANT.
CComVariant::operator != Указывает, не равен ли CComVariant объект указанному VARIANTобъекту.
CComVariant::operator = Присваивает объекту CComVariant значение.
CComVariant::operator == Указывает, равен ли CComVariant объект указанному VARIANTобъекту.

Замечания

CComVariantVARIANT выполняет оболочку и VARIANTARG тип, состоящий из объединения и члена, указывающего тип данных, хранящихся в союзе. VARIANTобычно используются в службе автоматизации.

CComVariant является производным от VARIANT типа, чтобы его можно было использовать везде VARIANT , где можно использовать. Например, можно использовать V_VT макрос для извлечения типа элемента CComVariant или получить доступ к vt элементу напрямую так же, как и с VARIANTпомощью.

Иерархия наследования

tagVARIANT
 └ CComVariant

Требования

Заголовок.atlcomcli.h

CComVariant::Attach

Сейф очищает текущее содержимое CComVariant объекта, копирует содержимое pSrc этого объекта, а затем задает тип варианта pSrcVT_EMPTY.

HRESULT Attach(VARIANT* pSrc);

Параметры

pSrc
[in] Указывает на VARIANT присоединение к объекту.

Возвращаемое значение

Стандартное значение HRESULT .

Замечания

Владение данными, удерживаемыми, pSrc передается объекту CComVariant .

CComVariant::CComVariant

Каждый конструктор обрабатывает безопасную инициализацию CComVariant объекта путем вызова VariantInit функции Win32 или задания значения и типа объекта в соответствии с переданными параметрами.

CComVariant() throw();
CComVariant(const CComVariant& varSrc);
CComVariant(const VARIANT& varSrc);
CComVariant(LPCOLESTR lpszSrc);
CComVariant(LPCSTR lpszSrc);
CComVariant(bool bSrc);
CComVariant(BYTE nSrc) throw();
CComVariant(int nSrc, VARTYPE vtSrc = VT_I4) throw();
CComVariant(unsigned int  nSrc, VARTYPE vtSrc = VT_UI4) throw();
CComVariant(shor  nSrc) throw();
CComVariant(unsigned short nSrc) throw();
CComVariant(long  nSrc, VARTYPE vtSrc = VT_I4) throw();
CComVariant(unsigned long  nSrc) throw();
CComVariant(LONGLONG  nSrc) throw();
CComVariant(ULONGLONG  nSrc) throw();
CComVariant(float  fltSrc) throw();
CComVariant(double  dblSrc, VARTYPE vtSrc = VT_R8) throw();
CComVariant(CY  cySrc) throw();
CComVariant(IDispatch* pSrc) throw();
CComVariant(IUnknown* pSrc) throw();
CComVariant(const SAFEARRAY* pSrc);
CComVariant(char  cSrc) throw();
CComVariant(const CComBSTR& bstrSrc);

Параметры

varSrc
[in] Объект CComVariant или VARIANT используется для инициализации CComVariant объекта. Содержимое исходного варианта копируется в место назначения без преобразования.

lpszSrc
[in] Символьная строка, используемая для инициализации CComVariant объекта. В версию конструктора или в LPCSTR версию anSI можно передать строку LPCOLESTR символов с нуля (Юникод). В любом случае строка преобразуется в выделенный Юникод BSTR с помощью SysAllocString. Тип CComVariant объекта .VT_BSTR

bSrc
[in] Используется bool для инициализации CComVariant объекта. Аргумент bool преобразуется в объект VARIANT_BOOL перед сохранением. Тип CComVariant объекта .VT_BOOL

nSrc
[in] int, BYTE, ULONGLONGlongshortunsigned shortunsigned longLONGLONGили unsigned int используется для инициализации CComVariant объекта. Тип CComVariant объекта : VT_I4, VT_UI1, VT_UI8VT_I2VT_I8VT_UI2VT_I4, , VT_UI4или VT_UI4соответственно.

vtSrc
[in] Тип варианта. Если первый параметр имеет intзначение, допустимые типы и VT_INTVT_I4 . Если первый параметр имеет longзначение, допустимые типы и VT_ERRORVT_I4 . Если первый параметр имеет doubleзначение, допустимые типы и VT_DATEVT_R8 . Если первый параметр имеет unsigned intзначение, допустимые типы и VT_UINTVT_UI4 .

fltSrc
[in] Используется float для инициализации CComVariant объекта. Тип CComVariant объекта .VT_R4

dblSrc
[in] Используется double для инициализации CComVariant объекта. Тип CComVariant объекта .VT_R8

cySrc
[in] Используется CY для инициализации CComVariant объекта. Тип CComVariant объекта .VT_CY

pSrc
[in] Указатель IDispatch , IUnknown используемый для инициализации CComVariant объекта. AddRef вызывается на указателе интерфейса. Тип CComVariant объекта или VT_DISPATCHVT_UNKNOWNсоответственно.

Или указатель, используемый SAFERRAY для инициализации CComVariant объекта. Копия объекта SAFEARRAY хранится.CComVariant Тип CComVariant объекта — это сочетание исходного SAFEARRAY типа и VT_ARRAY.

cSrc
[in] Используется char для инициализации CComVariant объекта. Тип CComVariant объекта .VT_I1

bstrSrc
[in] Используется BSTR для инициализации CComVariant объекта. Тип CComVariant объекта .VT_BSTR

Замечания

Деструктор управляет очисткой путем вызова CComVariant::Clear.

CComVariant::~CComVariant

Деструктор

~CComVariant() throw();

Замечания

Этот метод управляет очисткой путем вызова CComVariant::Clear.

CComVariant::ChangeType

Преобразует объект в CComVariant новый тип.

HRESULT ChangeType(VARTYPE vtNew, const VARIANT* pSrc = NULL);

Параметры

vtNew
[in] Новый тип объекта CComVariant .

pSrc
[in] Указатель на VARIANT значение, значение которого преобразуется в новый тип. Значение по умолчанию — это NULLозначает, что CComVariant объект преобразуется на месте.

Возвращаемое значение

Стандартное значение HRESULT .

Замечания

Если вы передаете значение для pSrc, ChangeType будет использоваться в VARIANT качестве источника для преобразования. CComVariant В противном случае объект является источником.

CComVariant::Clear

Очищает CComVariant объект, вызывая VariantClear функцию Win32.

HRESULT Clear();

Возвращаемое значение

Стандартное значение HRESULT .

Замечания

Деструктор автоматически вызывает Clear.

CComVariant::Copy

CComVariant Освобождает объект, а затем назначает ему копию указанного VARIANTобъекта.

HRESULT Copy(const VARIANT* pSrc);

Параметры

pSrc
[in] Указатель на копируемый VARIANT объект.

Возвращаемое значение

Стандартное значение HRESULT .

CComVariant::CopyTo

Копирует содержимое CComVariant объекта.

HRESULT CopyTo(BSTR* pstrDest);

Параметры

pstrDest
Указывает на объект BSTR , который получит копию содержимого CComVariant объекта.

Возвращаемое значение

Стандартное значение HRESULT .

Замечания

Объект CComVariant должен иметь тип VT_BSTR.

CComVariant::Detach

Отсоединяет базовый VARIANTCComVariant объект от объекта и задает для объекта тип VT_EMPTY.

HRESULT Detach(VARIANT* pDest);

Параметры

pDest
[out] Возвращает базовое VARIANT значение объекта.

Возвращаемое значение

Стандартное значение HRESULT .

Замечания

VARIANT Содержимое, на которое pDest ссылается ссылка, автоматически очищается перед назначением значения и типа вызывающего CComVariant объекта.

CComVariant::GetSize

Для простых фиксированных размеров VARIANTэтот метод возвращает sizeof значение базового типа данных плюс sizeof(VARTYPE).

ULONG GetSize() const;

Возвращаемое значение

Размер в байтах текущего содержимого CComVariant объекта.

Замечания

Если содержит VARIANT указатель интерфейса, GetSize запросы или IPersistStreamIPersistStreamInit. При успешном выполнении возвращаемое значение — это 32 бита 32 бита значения, возвращаемого плюсом GetSizeMaxsizeof(CLSID) и sizeof(VARTYPE). Если указатель интерфейса имеет значение NULL, GetSize возвращается sizeof(CLSID) плюс sizeof(VARTYPE). Если общий размер больше ULONG_MAX, GetSize возвращает значение sizeof(VARTYPE), указывающее на ошибку.

Во всех остальных случаях временный VARIANT тип VT_BSTR принудимся к текущему VARIANT. Длина этого BSTR вычисляется как размер длины строки плюс длина самой строки, а также размер символа NULL плюс sizeof(VARTYPE). VARIANT Если не удается принуть к VARIANT типуVT_BSTR, GetSize возвращаетсяsizeof(VARTYPE).

Размер, возвращаемый этим методом, соответствует количеству байтов, используемых CComVariant::WriteToStream в условиях успешного выполнения.

CComVariant::operator =

Назначает значение и соответствующий тип объекту CComVariant .

CComVariant& operator=(const CComVariant& varSrc);
CComVariant& operator=(const VARIANT& varSrc);
CComVariant& operator=(const CComBSTR& bstrSrc);
CComVariant& operator=(LPCOLESTR lpszSrc);
CComVariant& operator=(LPCSTR lpszSrc);
CComVariant& operator=(bool bSrc);
CComVariant& operator=(BYTE nSrc) throw();
CComVariant& operator=int nSrc) throw();
CComVariant& operator=(unsigned int nSrc) throw();
CComVariant& operator=(short nSrc) throw();
CComVariant& operator=(unsigned short nSrc) throw();
CComVariant& operator=(long nSrc) throw();
CComVariant& operator=(unsigned long nSrc) throw();
CComVariant& operator=(LONGLONG nSrc) throw();
CComVariant& operator=(ULONGLONG nSrc) throw();
CComVariant& operator=(float fltSrc) throw();
CComVariant& operator=(double dblSrc) throw();
CComVariant& operator=(CY cySrc) throw();
CComVariant& operator=(IDispatch* pSrc) throw();
CComVariant& operator=(IUnknown* pSrc) throw();
CComVariant& operator=(const SAFEARRAY* pSrc);
CComVariant& operator=(char cSrc) throw();

Параметры

varSrc
[in] Объекту CComVariant или VARIANT его назначению CComVariant . Содержимое исходного варианта копируется в место назначения без преобразования.

bstrSrc
[in] Присвоение BSTR объекту CComVariant . Тип CComVariant объекта .VT_BSTR

lpszSrc
[in] Символьная строка, назначенная объекту CComVariant . В версию оператора или строки LPCSTR ANSI в версию можно передать строку символов с нуля (ЮникодLPCOLESTR). В любом случае строка преобразуется в выделенный Юникод BSTR с помощью SysAllocString. Тип CComVariant объекта .VT_BSTR

bSrc
[in] Присвоение bool объекту CComVariant . Аргумент bool преобразуется в объект VARIANT_BOOL перед сохранением. Тип CComVariant объекта .VT_BOOL

nSrc
[in] int, , BYTE, shortunsigned shortlongULONGLONGunsigned longLONGLONG, или unsigned int присваиваться объекту.CComVariant Тип CComVariant объекта : VT_I4, VT_UI1, VT_UI8VT_I2VT_I8VT_UI2VT_I4, , VT_UI4или VT_UI4соответственно.

fltSrc
[in] Присвоение float объекту CComVariant . Тип CComVariant объекта .VT_R4

dblSrc
[in] Присвоение double объекту CComVariant . Тип CComVariant объекта .VT_R8

cySrc
[in] Присвоение CY объекту CComVariant . Тип CComVariant объекта .VT_CY

pSrc
[in] IUnknown УказательIDispatch, назначенный объектуCComVariant. AddRef вызывается на указателе интерфейса. Тип CComVariant объекта или VT_DISPATCHVT_UNKNOWNсоответственно.

Или указатель SAFEARRAY , назначаемый объекту CComVariant . Копия объекта SAFEARRAY хранится.CComVariant Тип CComVariant объекта — это сочетание исходного SAFEARRAY типа и VT_ARRAY.

cSrc
[in] Объекту присваивается CComVariant char. Тип CComVariant объекта .VT_I1

CComVariant::operator ==

Указывает, равен ли CComVariant объект указанному VARIANTобъекту.

bool operator==(const VARIANT& varSrc) const throw();

Замечания

Возвращает, TRUE если значение и тип varSrc равны значению и типу соответственно CComVariant объекта. В противном случае — FALSE. Оператор использует языковой стандарт пользователя по умолчанию для сравнения.

Оператор сравнивает только значение типов вариантов. Он сравнивает строки, целые числа и с плавающей запятой, но не массивы или записи.

CComVariant::operator !=

Указывает, не равен ли CComVariant объект указанному VARIANTобъекту.

bool operator!=(const VARIANT& varSrc) const throw();

Замечания

Возвращает, TRUE если значение или тип varSrc объекта не равно значению или типу CComVariant соответственно. В противном случае — FALSE. Оператор использует языковой стандарт пользователя по умолчанию для сравнения.

Оператор сравнивает только значение типов вариантов. Он сравнивает строки, целые числа и с плавающей запятой, но не массивы или записи.

CComVariant::operator <

Указывает, меньше ли CComVariant объект, чем указанный VARIANT.

bool operator<(const VARIANT& varSrc) const throw();

Замечания

Возвращает, TRUE если значение CComVariant объекта меньше значения varSrc. В противном случае — FALSE. Оператор использует языковой стандарт пользователя по умолчанию для сравнения.

CComVariant::operator >

Указывает, превышает ли CComVariant объект указанный VARIANT.

bool operator>(const VARIANT& varSrc) const throw();

Замечания

Возвращает, TRUE если значение CComVariant объекта больше значения varSrc. В противном случае — FALSE. Оператор использует языковой стандарт пользователя по умолчанию для сравнения.

CComVariant::ReadFromStream

Задает базовый VARIANTVARIANT объект, содержащийся в указанном потоке.

HRESULT ReadFromStream(IStream* pStream);

Параметры

pStream
[in] Указатель на IStream интерфейс в потоке, содержащий данные.

Возвращаемое значение

Стандартное значение HRESULT .

Замечания

ReadToStream требует предыдущего вызова WriteToStream.

CComVariant::SetByRef

Инициализирует CComVariant объект и задает vt для элемента значение VT_BYREF.

template < typename T >
void SetByRef(T* pT) throw();

Параметры

T
Тип VARIANT, например, BSTRintили char.

pT
Указатель, используемый для инициализации CComVariant объекта.

Замечания

SetByRef— это шаблон функции, который инициализирует CComVariant объект указателем pT и задает для элемента значение VT_BYREFvt . Например:

CComVariant var;
int nData = 10;
var.SetByRef(&nData);   

CComVariant::WriteToStream

Сохраняет базовый VARIANT объект в потоке.

HRESULT WriteToStream(IStream* pStream);

Параметры

pStream
[in] Указатель на IStream интерфейс в потоке.

Возвращаемое значение

Стандартное значение HRESULT .

См. также

Общие сведения о классе