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


Метод IPerPropertyBrowsing::GetPredefinedStrings (ocidl.h)

Извлекает строки описания массива для допустимых значений, которые может принимать указанное свойство.

Синтаксис

HRESULT GetPredefinedStrings(
  [in]  DISPID     dispID,
  [out] CALPOLESTR *pCaStringsOut,
  [out] CADWORD    *pCaCookiesOut
);

Параметры

[in] dispID

Идентификатор диспетчеризации свойства.

[out] pCaStringsOut

Указатель на структуру массива, выделенного вызывающим объектом, которая содержит число элементов и адрес выделенного методом массива строковых указателей. Этот метод также выделяет память для строковых значений, содержащих предопределенные имена, и сохраняет строковые указатели в массиве. Если метод завершается сбоем, память не выделяется, а содержимое структуры не определено.

[out] pCaCookiesOut

Указатель на структуру массива, выделенного вызывающим объектом, которая содержит число элементов и адрес выделенного методом массива значений DWORD . Значения в массиве можно передать в IPerPropertyBrowsing::GetPredefinedValue , чтобы получить значение, связанное с именем в той же позиции массива внутри pCaStringsOut. Если метод завершается сбоем, память не выделяется, а содержимое структуры не определено.

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

Этот метод может возвращать стандартные возвращаемые значения E_INVALIDARG, E_OUTOFMEMORY и E_UNEXPECTED, а также следующие значения.

Код возврата Описание
S_OK
Метод завершился успешно.
E_NOTIMPL
Этот метод не реализован, и предопределенные имена не поддерживаются.
E_POINTER
Недопустимый адрес в pCaStringsOut или pCaCookiesOut . Например, любой из параметров может иметь значение NULL.

Комментарии

Каждая строка, возвращаемая в массиве, на который указывает pCaStringsOut , имеет соответствующий маркер в подсчитываемом массиве, на который указывает pCaCookiesOut, где маркер можно передать в IPerPropertyBrowsing::GetPredefinedValue , чтобы получить фактическое значение ( VARIANT), соответствующее строке.

Используя предопределенные строки, вызывающий объект может получить список строк для заполнения элементов пользовательского интерфейса, например раскрывающегося списка. Когда пользователь выбирает одну из этих строк в качестве значения для назначения свойству, вызывающий объект может получить соответствующее значение с помощью IPerPropertyBrowsing::GetPredefinedValue.

Примечания к вызывающим абонентам

Структуры CALPOLESTR и CADWORD , передаваемые этому методу, выделяются вызывающим объектом. Вызывающий объект отвечает за освобождение каждой строки, на которую указывает массив CALPOLESTR , а также из структуры CALPOLESTR .

Вся память выделяется с помощью CoTaskMemAlloc. Вызывающий объект отвечает за освобождение строк и массива с помощью CoTaskMemFree.

При возвращении из этого метода вызывающий объект отвечает за всю эту память и должен освободить ее, когда она больше не нужна. Код для этого выглядит следующим образом.

CALPOLESTR     castr; 
CWDWORD        cadw; 
ULONG          i; 
 
pIPerPropertyBrowsing->GetPredefinedStrings(dispID, &castr, &cadw); 
 
//...Use the strings and the cookies 
 
CoTaskMemFree((void *)cadw.pElems); 
 
for (i=0; i < castr.cElems; i++) 
    CoTaskMemFree((void *)castr.pElems[i]); 
 
CoTaskMemFree((void *)castr.pElems); 

Примечания для разработчиков

Поддержка предопределенных имен и значений не требуется. Если объект не поддерживает эти имена, верните E_NOTIMPL из этого метода. Если этот метод не реализован, IPerPropertyBrowsing::GetPredefinedValue также не должен быть реализован.

Этот метод заполняет элементы cElems и pElems структур CADWORD и CALPOLESTR . Он выделяет массивы, на которые указывают эти структуры, с помощью CoTaskMemAlloc и заполняет эти массивы. В случае CALPOLESTR этот метод также выделяет каждую строку с CoTaskMemAlloc, сохраняя каждый указатель строки в массиве.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header ocidl.h

См. также раздел

CADWORD

CALPOLESTR

IPerPropertyBrowsing