C++ Builder 參考手冊(cè) ? TComponent ? GetIDsOfNames
頭文件:#include <System.Classes.hpp>
命名空間:System::Classes
類(lèi):TComponent
訪問(wèn)權(quán)限:protected:
函數(shù)原型:
HRESULT __stdcall GetIDsOfNames(
const GUID &IID,
void * Names,
int NameCount,
int LocaleID,
void * DispIDs);
System::Classes::TComponent::GetIDsOfNames 是 System::Classes::TComponent 的成員函數(shù)翔怎,通過(guò)名字獲取 DISPID厅克,用于調(diào)用 Invoke 方法。
參數(shù):
- IID:預(yù)留參數(shù),必須用 IID_NULL塑猖;
- Names:字符串?dāng)?shù)組,這個(gè)參數(shù)實(shí)際上是 wchar_t ** 類(lèi)型的叹谁;
- NameCount:Names 數(shù)組里面的字符串個(gè)數(shù)
- LocaleID:區(qū)域和語(yǔ)言稀蟋,可以用 GetThreadLocale 獲取當(dāng)前線(xiàn)程的區(qū)域和語(yǔ)言,也可以用 MAKELCID 生成苛白,或者使用 LOCALE_SYSTEM_DEFAULT 等娃豹;
- DispIDs:傳入 DISPID 的地址/數(shù)組,用于返回獲取到的 DISPID
返回值:
COM 調(diào)用的返回值购裙,如果小于零懂版,表示執(zhí)行有錯(cuò)誤,
返回值 | 說(shuō)明 |
---|---|
S_OK | 成功 |
E_OUTOFMEMORY | 內(nèi)存不足 |
DISP_E_UNKNOWNNAME | 至少有一個(gè)名字不存在躏率, 對(duì)應(yīng)的 DISPID 會(huì)返回 DISPID_UNKNOWN |
DISP_E_UNKNOWNLCID | 區(qū)域不存在 |
- 把 COM 接口的屬性躯畴、方法和參數(shù)的名字轉(zhuǎn)為 DISPID民鼓,DISPID 就是調(diào)用 IDispatch::Invoke 使用的屬性、方法和參數(shù)的 ID私股;
- 如果封裝的是 IDispatch 會(huì)實(shí)現(xiàn) IDispatch 的 GetIDsOfNames摹察;
- 可以用 System::Win::Comobj::OleCheck 判斷返回值是否有錯(cuò)誤,如果有錯(cuò)誤倡鲸,會(huì)拋出 EOleSysError 異常供嚎。
例:
LPCWSTR name = L"FuncName";
LCID lcid = GetThreadLocale();
DISPID id;
HRESULT hr = GetIDsOfNames(IID_NULL, (LPWSTR*)(&name), 1, lcid, &id);
System::Win::Comobj::OleCheck(hr);
參考:
- System::Classes::TComponent::Invoke
- System::Classes::TComponent::BeginInvoke
- System::Classes::TComponent::EndInvoke
- System::Classes::TComponent::EndFunctionInvoke
- System::Classes::TComponent::GetTypeInfo
- System::Classes::TComponent::GetTypeInfoCount
- System::Classes::TComponent
- System::Classes::TPersistent
- System::TObject
- VCL 類(lèi)繼承關(guān)系
C++ Builder 參考手冊(cè) ? TComponent ? GetIDsOfNames