一个用MFC写的OCX控件,派发接口在odl控件中的定义为:
helpstring("BasicInfo Control"), hidden ]
dispinterface _DBasicInfo
{
properties:
methods:
[id(1)] void ShowLog();
[id(2)] void SaveFile();
[id(3)] void DevMgmtMsc();
[id(4)] void HtmlHelp();
[id(DISPID_ABOUTBOX)] void AboutBox();
};我是在WTL中用CAxWindow来创建并用IDispatch接口来调用它的函数的:
CAxWindow wndBasic;
......
CComPtr<IDispatch> pDispatch;
wndBasic.QueryControl(IID_IDispatch, (void **)&pDispatch);

DISPID did;
LPOLESTR lpOleStr = L"ShowLog";
HRESULT hr = pDispatch->GetIDsOfNames(IID_NULL, &lpOleStr, 1, LOCALE_SYSTEM_DEFAULT, &did);         //成功,did=1
hr = pDispatch->Invoke(did, IID_NULL, LOCALE_SYSTEM_DEFAULT, DISPATCH_METHOD, NULL, NULL, 0, NULL); //失败,返回hr=E_INVALIDARGInvoke函数老是失败,在MFC中用InvokeHelper就能成功
请问我写的Invoke函数哪里不对吗?