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
S_OK
메서드가 완료되었습니다.
E_NOTIMPL
이 메서드는 구현되지 않으며 미리 정의된 이름은 지원되지 않습니다.
E_POINTER
pCaStringsOut 또는 pCaCookiesOut의 주소가 잘못되었습니다. 예를 들어 두 매개 변수 중 하나가 NULL일 수 있습니다.

설명

pCaStringsOut이 가리키는 배열에 반환된 각 문자열에는 pCaCookiesOut이 가리키는 계산된 배열에 일치하는 토큰이 있습니다. 여기서 토큰을 IPerPropertyBrowsing::GetPredefinedValue에 전달하여 문자열에 해당하는 실제 값(VARIANT)을 가져올 수 있습니다.

호출자는 미리 정의된 문자열을 사용하여 드롭다운 목록 상자와 같은 사용자 인터페이스 요소를 채우기 위한 문자열 목록을 가져올 수 있습니다. 최종 사용자가 속성에 할당할 값으로 이러한 문자열 중 하나를 선택하면 호출자는 IPerPropertyBrowsing::GetPredefinedValue를 통해 해당 값을 가져올 수 있습니다.

발신자에 대한 참고 사항

이 메서드에 전달된 CALPOLESTRCADWORD 구조체는 모두 호출자가 할당합니다. 호출자는 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 도 구현해서는 안 됩니다.

이 메서드는 CADWORDCALPOLESTR 구조체의 cElemspElems 멤버를 채웁니다. 이러한 구조체에서 가리키는 배열을 CoTaskMemAlloc 으로 할당하고 해당 배열을 채웁니다. CALPOLESTR의 경우 이 메서드는 CoTaskMemAlloc를 사용하여 각 문자열을 할당하고 각 문자열 포인터를 배열에 저장합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 ocidl.h

추가 정보

CADWORD

CALPOLESTR

IPerPropertyBrowsing