Поделиться через


Класс CComVariant

Замечание

Библиотека активных шаблонов (ATL) продолжает поддерживаться. Однако мы больше не добавляем функции или обновляем документацию.

Этот класс упаковывает 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 Описание
CComVariant::operator < Указывает, меньше ли CComVariant объект, чем указанный VARIANT.
CComVariant::operator > Указывает, превышает ли CComVariant объект указанный VARIANT.
CComVariant::operator != Указывает, не равен ли CComVariant объект указанному VARIANTобъекту.
CComVariant::operator = Присваивает объекту CComVariant значение.
CComVariant::operator == Указывает, равен ли CComVariant объект указанному VARIANTобъекту.

Замечания

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

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

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

tagVARIANT
 └ CComVariant

Требования

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

CComVariant::Attach

Безопасно очищает текущее содержимое объекта, копирует содержимое CComVariantpSrc этого объекта, а затем задает тип 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 объекта. В версию конструктора или в LPCOLESTR версию anSI можно передать строку LPCSTR символов с нуля (Юникод). В любом случае строка преобразуется в выделенный Юникод BSTR с помощью SysAllocString. Тип CComVariant объекта .VT_BSTR

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

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

vtSrc
[in] Тип варианта. Если первый параметр имеет intзначение, допустимые типы и VT_I4VT_INT . Если первый параметр имеет longзначение, допустимые типы и VT_I4VT_ERROR . Если первый параметр имеет doubleзначение, допустимые типы и VT_R8VT_DATE . Если первый параметр имеет unsigned intзначение, допустимые типы и VT_UI4VT_UINT .

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 . В версию оператора или строки LPCOLESTR ANSI в версию можно передать строку символов с нуля (ЮникодLPCSTR). В любом случае строка преобразуется в выделенный Юникод BSTR с помощью SysAllocString. Тип CComVariant объекта .VT_BSTR

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

nSrc
[in] int, , BYTE, shortlongLONGLONGULONGLONGunsigned shortunsigned long, или unsigned int присваиваться объекту.CComVariant Тип CComVariant объекта : VT_I4, VT_UI1, VT_I2VT_I4VT_I8VT_UI8VT_UI2, , 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] IDispatch УказательIUnknown, назначенный объекту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 и задает для элемента значение vtVT_BYREF . Например:

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

CComVariant::WriteToStream

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

HRESULT WriteToStream(IStream* pStream);

Параметры

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

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

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

См. также

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