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,以及下列值。
傳回碼 | 描述 |
---|---|
|
已成功完成命令。 |
|
這個方法並未實作,而且不支援預先定義的名稱。 |
|
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 |