Класс CComVariant
Этот класс упаковывает VARIANT
тип, предоставляя элемент, указывающий тип хранимых данных.
Синтаксис
class CComVariant : public tagVARIANT
Участники
Открытые конструкторы
Имя | Описание |
---|---|
CComVariant::CComVariant |
Конструктор. |
CComVariant::~CComVariant |
Деструктор |
Открытые методы
Имя | Описание |
---|---|
CComVariant::Attach |
Присоединяет объект VARIANT к объекту CComVariant . |
CComVariant::ChangeType |
Преобразует объект в CComVariant новый тип. |
CComVariant::Clear |
Очищает CComVariant объект. |
CComVariant::Copy |
Копирует объект VARIANT CComVariant . |
CComVariant::CopyTo |
Копирует содержимое CComVariant объекта. |
CComVariant::Detach |
Отсоединяет базовый VARIANT CComVariant объект от объекта. |
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 объекту. |
Замечания
CComVariant
VARIANT
выполняет оболочку и VARIANTARG
тип, состоящий из объединения и члена, указывающего тип данных, хранящихся в союзе. VARIANT
обычно используются в службе автоматизации.
CComVariant
является производным от VARIANT
типа, чтобы его можно было использовать везде VARIANT
, где можно использовать. Например, можно использовать V_VT
макрос для извлечения типа элемента CComVariant
или получить доступ к vt
элементу напрямую так же, как и с VARIANT
помощью.
Иерархия наследования
Требования
Заголовок: atlcomcli.h
CComVariant::Attach
Безопасно очищает текущее содержимое объекта, копирует содержимое CComVariant
pSrc
этого объекта, а затем задает тип pSrc
VT_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
, ULONGLONG
long
short
unsigned short
unsigned long
LONGLONG
или unsigned int
используется для инициализации CComVariant
объекта. Тип CComVariant
объекта : VT_I4
, VT_UI1
, VT_UI8
VT_I2
VT_I8
VT_UI2
VT_I4
, , VT_UI4
или VT_UI4
соответственно.
vtSrc
[in] Тип варианта. Если первый параметр имеет int
значение, допустимые типы и VT_INT
VT_I4
. Если первый параметр имеет long
значение, допустимые типы и VT_ERROR
VT_I4
. Если первый параметр имеет double
значение, допустимые типы и VT_DATE
VT_R8
. Если первый параметр имеет unsigned int
значение, допустимые типы и VT_UINT
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_DISPATCH
VT_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
Отсоединяет базовый VARIANT
CComVariant
объект от объекта и задает для объекта тип 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
запросы или IPersistStream
IPersistStreamInit
. При успешном выполнении возвращаемое значение — это 32 бита 32 бита значения, возвращаемого плюсом GetSizeMax
sizeof(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
, short
unsigned short
long
ULONGLONG
unsigned long
LONGLONG
, или unsigned int
присваиваться объекту.CComVariant
Тип CComVariant
объекта : VT_I4
, VT_UI1
, VT_UI8
VT_I2
VT_I8
VT_UI2
VT_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_DISPATCH
VT_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
Задает базовый VARIANT
VARIANT
объект, содержащийся в указанном потоке.
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
, например, BSTR
int
или char
.
pT
Указатель, используемый для инициализации CComVariant
объекта.
Замечания
SetByRef
— это шаблон функции, который инициализирует CComVariant
объект указателем pT
и задает для элемента значение VT_BYREF
vt
. Например:
CComVariant var;
int nData = 10;
var.SetByRef(&nData);
CComVariant::WriteToStream
Сохраняет базовый VARIANT
объект в потоке.
HRESULT WriteToStream(IStream* pStream);
Параметры
pStream
[in] Указатель на IStream
интерфейс в потоке.
Возвращаемое значение
Стандартное значение HRESULT
.