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


Класс COleVariant

Инкапсулирует тип данных VARIANT .

Синтаксис

class COleVariant : public tagVARIANT

Участники

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

Имя Описание
COleVariant::COleVariant Формирует объект COleVariant.

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

Имя Описание
COleVariant::Attach Присоединяет VARIANT к объекту COleVariant.
COleVariant::ChangeType Изменяет тип варианта данного COleVariant объекта.
COleVariant::Clear Очищает данный объект COleVariant.
COleVariant::D etach Отсоединяет вариант VARIANT от объекта COleVariant и возвращает variant.
COleVariant::GetByteArrayFromVariantArray Извлекает массив байтов из существующего массива вариантов.
COleVariant::SetString Задает строку определенному типу, как правило, ANSI.

Открытые операторы

Имя Описание
COleVariant::operator LPCVARIANT COleVariant Преобразует значение в значениеLPCVARIANT.
COleVariant::operator LPVARIANT COleVariant Преобразует объект в объектLPVARIANT.
COleVariant::operator = Копирует COleVariant значение.
COleVariant::operator == Сравнивает два COleVariant значения.
COleVariant::operator <<, COleVariant::operator >> COleVariant Выводит значение CArchive в объект или CDumpContext вводит его COleVariant изCArchive.

Замечания

Этот тип данных используется в автоматизации OLE. В частности, структура DISPPARAMS содержит указатель на массив структур VARIANT. Структура DISPPARAMS используется для передачи параметров в IDispatch::Invoke.

Примечание.

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

Два связанных класса MFC COleCurrency и COleDateTime инкапсулируют вариантные типы данных CURRENCY ( VT_CY) и DATE ( VT_DATE). Класс COleVariant широко используется в классах DAO. См. эти классы для типичного использования этого класса, например CDaoQueryDef и CDaoRecordset.

Дополнительные сведения см. в записях VARIANT, CURRENCY, DISPPARAMS и IDispatch::Invoke в пакете SDK для Windows.

Дополнительные сведения о COleVariant классе и его использовании в автоматизации OLE см. в статье "Передача параметров в OLE Automation".

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

tagVARIANT

COleVariant

Требования

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

COleVariant::Attach

Вызовите эту функцию, чтобы подключить заданный объект VARIANT к текущему COleVariant объекту.

void Attach(VARIANT& varSrc);

Параметры

varSrc
Существующий VARIANT объект, присоединенный к текущему COleVariant объекту.

Замечания

Эта функция задает для VARTYPE varSrc значение VT_EMPTY.

Дополнительные сведения см . в записях VARIANT и VARENUM в пакете SDK для Windows.

COleVariant::COleVariant

Формирует объект COleVariant.

COleVariant();
COleVariant(const VARIANT& varSrc);
COleVariant(const COleVariant& varSrc);
COleVariant(LPCVARIANT pSrc);
COleVariant(LPCTSTR lpszSrc);
COleVariant(LPCTSTR lpszSrc, VARTYPE vtSrc);
COleVariant(CString& strSrc);
COleVariant(BYTE nSrc);
COleVariant(short nSrc, VARTYPE vtSrc = VT_I2);
COleVariant(long lSrc,VARTYPE vtSrc = VT_I4);
COleVariant(const COleCurrency& curSrc);
COleVariant(float fltSrc);
COleVariant(double dblSrc);
COleVariant(const COleDateTime& timeSrc);
COleVariant(const CByteArray& arrSrc);
COleVariant(const CLongBinary& lbSrc);
COleVariant(LPCITEMIDLIST pidl);

Параметры

varSrc
Существующий COleVariant объект или VARIANT объект, копируемый в новый COleVariant объект.

pSrc
Указатель на VARIANT объект, который будет скопирован в новый COleVariant объект.

lpszSrc
Строка, завершающаяся значением NULL, копируется в новый COleVariant объект.

vtSrc
Объект VARTYPE для нового COleVariant объекта.

strSrc
Объект CString, копируемый в новый COleVariant объект.

nSrc, lSrc A числовое значение, копируемые в новый COleVariant объект.

vtSrc
Объект VARTYPE для нового COleVariant объекта.

curSrc
Объект COleCurrency, копируемый в новый COleVariant объект.

fltSrc, dblSrc
Числовое значение, которое необходимо скопировать в новый объект COleVariant.

timeSrc
Объект COleDateTime, копируемый в новый COleVariant объект.

arrSrc
Объект CByteArray, копируемый в новый COleVariant объект.

lbSrc
Объект CLongBinary для копирования в новый COleVariant объект.

pidl
Указатель на структуру ITEMIDLIST, скопированную в новый COleVariant объект.

Замечания

Все эти конструкторы создают новые COleVariant объекты, инициализированные в указанное значение. Краткое описание каждого из этих конструкторов следует.

  • COleVariant( ) создает пустой COleVariant объект, VT_EMPTY.

  • COleVariant(varSrc) копирует существующий VARIANT или COleVariant объект. Тип variant сохранен.

  • COleVariant(pSrc) копирует существующий VARIANT или COleVariant объект. Тип variant сохранен.

  • COleVariant(lpszSrc) копирует строку в новый объект VT_BSTR (ЮНИКОД).

  • COleVariant(lpszSrc , vtSrc ) копирует строку в новый объект. Параметр vtSrc должен быть VT_BSTR (ЮНИКОД) или VT_BSTRT (ANSI).

  • COleVariant(strSrc) копирует строку в новый объект, VT_BSTR (ЮНИКОД).

  • COleVariant(nSrc) копирует 8-разрядное целое число в новый объект, VT_UI1.

  • COleVariant( nSrc , vtSrc ) копирует 16-разрядное целое число (или логическое значение) в новый объект. Параметр vtSrc должен быть VT_I2 или VT_BOOL.

  • COleVariant( lSrc , vtSrc ) копирует 32-разрядное целое число (или значение SCODE) в новый объект. Параметр vtSrc должен быть VT_I4, VT_ERROR или VT_BOOL.

  • COleVariant(curSrc) копирует COleCurrency значение в новый объект, VT_CY.

  • COleVariant(fltSrc) копирует 32-разрядное значение с плавающей запятой в новый объект, VT_R4.

  • COleVariant(dblSrc) копирует 64-разрядное значение с плавающей запятой в новый объект, VT_R8.

  • COleVariant(timeSrc) копирует COleDateTime значение в новый объект, VT_DATE.

  • COleVariant(arrSrc) копирует CByteArray объект в новый объект, VT_EMPTY.

  • COleVariant(lbSrc) копирует CLongBinary объект в новый объект, VT_EMPTY.

Дополнительные сведения о SCODE см. в разделе "Структура кодов ошибок COM" в пакете SDK для Windows.

COleVariant::ChangeType

Преобразует тип значения variant в этом COleVariant объекте.

void ChangeType(VARTYPE vartype, LPVARIANT pSrc = NULL);

Параметры

vartype
VARTYPE для этого COleVariant объекта.

pSrc
Указатель на объект VARIANT для преобразования. Если это значение равно NULL, этот COleVariant объект используется в качестве источника для преобразования.

Замечания

Дополнительные сведения см . в записях VARIANT, VARENUM и VariantChangeType в пакете SDK для Windows.

COleVariant::Clear

Очищает VARIANT.

void Clear();

Замечания

При этом объект VARTYPE устанавливается на VT_EMPTY. Деструктор COleVariant вызывает эту функцию.

Дополнительные сведения см. в разделе VARIANTVARTYPE и VariantClear записи в пакете SDK для Windows.

COleVariant::D etach

Отсоединяет базовый объект VARIANT от этого COleVariant объекта.

VARIANT Detach();

Замечания

Эта функция задает varTYPE для этого COleVariant объекта VT_EMPTY.

Примечание.

После вызова Detachвызывающий объект несет ответственность за вызов VariantClear результирующей VARIANT структуры.

Дополнительные сведения см . в записях VARIANT, VARENUM и VariantClear в пакете SDK для Windows.

COleVariant::GetByteArrayFromVariantArray

Извлекает массив байтов из существующего массива вариантов

void GetByteArrayFromVariantArray(CByteArray& bytes);

Параметры

bytes
Ссылка на существующий объект CByteArray .

COleVariant::operator LPCVARIANT

Этот оператор приведения возвращает структуру VARIANT , значение которой копируется из этого COleVariant объекта.

operator LPCVARIANT() const;

Замечания

COleVariant::operator LPVARIANT

Вызовите этот оператор приведения, чтобы получить доступ к базовой VARIANT структуре для этого COleVariant объекта.

operator LPVARIANT();

Замечания

Внимание

Изменение значения в VARIANT структуре, к которым обращается указатель, возвращаемый этой функцией, изменит значение этого COleVariant объекта.

COleVariant::operator =

Эти перегруженные операторы назначения копируют исходное значение в этот COleVariant объект.

const COleVariant& operator=(const VARIANT& varSrc);
const COleVariant& operator=(LPCVARIANT pSrc);
const COleVariant& operator=(const COleVariant& varSrc);
const COleVariant& operator=(const LPCTSTR lpszSrc);
const COleVariant& operator=(const CString& strSrc);
const COleVariant& operator=(BYTE nSrc);
const COleVariant& operator=(short nSrc);
const COleVariant& operator=(long lSrc);
const COleVariant& operator=(const COleCurrency& curSrc);
const COleVariant& operator=(float fltSrc);
const COleVariant& operator=(double dblSrc);
const COleVariant& operator=(const COleDateTime& dateSrc);
const COleVariant& operator=(const CByteArray& arrSrc);
const COleVariant& operator=(const CLongBinary& lbSrc);

Замечания

Краткое описание каждого оператора выглядит следующим образом:

  • оператор =( varSrc) копирует существующий VARIANT или COleVariant объект в этот объект.

  • оператор =( pSrc) копирует объект VARIANT, к которым обращается pSrc в этот объект.

  • оператор =( lpszSrc) Копирует строку, завершаемую значением NULL, в этот объект, и задает varTYPE для VT_BSTR.

  • оператор =( strSrc) копирует объект CString в этот объект и задает varTYPE значение VT_BSTR.

  • оператор =( nSrc) копирует целочисленное значение 8- или 16-разрядного числа в этот объект. Если nSrc является 8-разрядным значением, varTYPE этого параметра имеет значение VT_UI1. Если nSrc является 16-разрядным значением, а VARTYPE этого VT_BOOL, он сохраняется; в противном случае он имеет значение VT_I2.

  • оператор =(lSrc) копирует 32-разрядное целочисленное значение в этот объект. Если тип VARTYPE этого VT_ERROR, он сохраняется; в противном случае для него задано значение VT_I4.

  • оператор =( curSrc) Копирует объект COleCurrency в этот объект и задает varTYPE в VT_CY.

  • оператор =( fltSrc) копирует 32-разрядное значение с плавающей запятой в этот объект и задает VARTYPE для VT_R4.

  • оператор =( dblSrc) Копирует 64-разрядное значение с плавающей запятой в этот объект и задает varTYPE значение VT_R8.

  • оператор =( dateSrc) копирует объект COleDateTime в этот объект и задает VARTYPE для VT_DATE.

  • оператор =( arrSrc) копирует объект CByteArray в этот COleVariant объект.

  • оператор =( lbSrc) копирует объект CLongBinary в этот COleVariant объект.

Дополнительные сведения см . в записях VARIANT и VARENUM в пакете SDK для Windows.

COleVariant::operator ==

Этот оператор сравнивает два значения варианта и возвращает ненулевое значение, если они равны; в противном случае — 0.

BOOL operator==(const VARIANT& varSrc) const;
BOOL operator==(LPCVARIANT pSrc) const;

COleVariant::operator <<, COleVariant::operator >>

COleVariant Выводит значение CArchive в объект или CdumpContext вводит его COleVariant изCArchive.

friend CDumpContext& AFXAPI operator<<(
    CDumpContext& dc,
    OleVariant varSrc);

friend CArchive& AFXAPI operator<<(
    CArchive& ar,
    COleVariant varSrc);

friend CArchive& AFXAPI operator>>(
    CArchive& ar,
    COleVariant& varSrc);

Замечания

Оператор COleVariant вставки (<<) поддерживает дамп диагностики и хранение в архив. Оператор извлечения (>>) поддерживает загрузку из архива.

COleVariant::SetString

Задает строку определенному типу.

void SetString(LPCTSTR lpszSrc, VARTYPE vtSrc);

Параметры

lpszSrc
Строка, завершающаяся значением NULL, копируется в новый COleVariant объект.

VtSrc
VARTYPE для нового COleVariant объекта.

Замечания

Параметр vtSrc должен быть VT_BSTR (ЮНИКОД) или VT_BSTRT (ANSI). SetString обычно используется для задания строк ANSI, так как по умолчанию для конструктора COleVariant::COleVariant с параметром строки или указателя строки, а VARTYPE не является ЮНИКОД.

Набор записей DAO в сборке, отличной от ЮНИКОДа, ожидает, что строки будут ANSI. Таким образом, для функций DAO, использующих COleVariant объекты, если вы не создаете набор записей ЮНИКОД, необходимо использовать форму конструктора COleVariant::COleVariant(lpszSrc , vtSrc) конструктора с vtSrc, установленной для VT_BSTRT (ANSI) или использовать SetString для vtSrc, установленной для VT_BSTRT, чтобы сделать строки ANSI. Например, CDaoRecordset функции CDaoRecordset::Seek и CDaoRecordset::SetFieldValue используют COleVariant объекты в качестве параметров. Эти объекты должны быть ANSI, если набор записей DAO не является ЮНИКОДом.

См. также

Диаграмма иерархии