Функция PropVariantToDouble (propvarutil.h)
Извлекает значение типа double из структуры PROPVARIANT .
Синтаксис
PSSTDAPI PropVariantToDouble(
[in] REFPROPVARIANT propvarIn,
[out] DOUBLE *pdblRet
);
Параметры
[in] propvarIn
Тип: REFPROPVARIANT
Ссылка на исходную структуру PROPVARIANT .
[out] pdblRet
Тип: DOUBLE*
При возврате этой функцией содержит значение извлеченного свойства, если оно существует; в противном случае содержит 0,0.
Возвращаемое значение
Тип: HRESULT
Если эта функция выполняется успешно, она возвращает S_OK. В противном случае возвращается код ошибки HRESULT .
Комментарии
Эта вспомогающая функция используется в тех местах, где вызывающее приложение ожидает , что PROPVARIANT будет содержать одно значение двойной плавающей запятой. Например, приложение, получающее значения из хранилища свойств, может использовать его для безопасного извлечения значения double для свойств double.
Если исходный PROPVARIANT имеет тип VT_R8, эта вспомогательная функция извлекает значение double. В противном случае он пытается преобразовать значение в структуре PROPVARIANT в значение double. Если преобразование невозможно, PropVariantToDouble вернет код сбоя и присвоит pdblRet значение 0.0. Список возможных преобразований см. в разделе PropVariantChangeType . Обратите внимание, что VT_EMPTY успешно преобразуется в 0,0.
Примеры
В следующем примере, который будет включен в состав более крупной программы, показано, как использовать PropVariantToDouble для доступа к двойному значению в PROPVARIANT.
// IPropertyStore *ppropstore;
// Assume variable ppropstore is initialized and valid
PROPVARIANT propvar = {0};
HRESULT hr = ppropstore->GetValue(PKEY_Image_HorizontalResolution, &propvar);
if (SUCCEEDED(hr))
{
// PKEY_Image_HorizontalResolution is expected to produce a VT_R8 or VT_EMPTY value.
// PropVariantToDouble will successfully convert VT_EMPTY to a 0.0.
DOUBLE dblHorzResolution;
hr = PropVariantToDouble(propvar, &dblHorzResolution);
if (SUCCEEDED(hr))
{
// dblHorzResolution is now valid
}
else
{
// dblHorzResolution contains 0.0
}
PropVariantClear(&propvar);
}
Требования
Минимальная версия клиента | Windows XP с пакетом обновления 2 (SP2), Windows Vista [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 с пакетом обновления 1 (SP1) [только классические приложения] |
Целевая платформа | Windows |
Header | propvarutil.h |
Библиотека | Propsys.lib |
DLL | Propsys.dll (версия 6.0 или более поздняя) |
Распространяемые компоненты | Windows Desktop Search (WDS) 3.0 |