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 표준 반환 값을 반환할 수 있습니다.
반환 코드 | Description |
---|---|
|
메서드가 완료되었습니다. |
|
이 메서드는 구현되지 않으며 미리 정의된 이름은 지원되지 않습니다. |
|
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 도 구현해서는 안 됩니다.이 메서드는 CADWORD 및 CALPOLESTR 구조체의 cElems 및 pElems 멤버를 채웁니다. 이러한 구조체에서 가리키는 배열을 CoTaskMemAlloc 으로 할당하고 해당 배열을 채웁니다. CALPOLESTR의 경우 이 메서드는 CoTaskMemAlloc를 사용하여 각 문자열을 할당하고 각 문자열 포인터를 배열에 저장합니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000 Professional[데스크톱 앱만] |
지원되는 최소 서버 | Windows 2000 Server[데스크톱 앱만] |
대상 플랫폼 | Windows |
헤더 | ocidl.h |