是否可以使用传递HWND
的COM方法?在我的对象CoCreateInstance
中使用以下方法返回DISP_E_BADVARTYPE
(0x80020008
):
STDMETHODIMP ShowDialog(HWND hWndParent);
到目前为止,我通过传递OLE_HANDLE
然后投射它来解决这个问题,但感觉就像一块污泥:
STDMETHODIMP ShowDialog(OLE_HANDLE hWndParent);
答案 0 :(得分:2)
我认为HWND是指向结构的指针,这就是为什么你不能在IDL中使用它 如果您查看Microsoft Typelibs,您将看到有关如何传递句柄的各种变体(从int到long到HANDLE)。
答案 1 :(得分:1)
您的界面可能注册为“dual”,而HWND不是OLE自动化支持的类型之一。您的界面是否需要与IDispatch兼容(您是否需要通过脚本或后期绑定语言调用它)?如果没有,从IUnknown而不是IDispatch派生而不注册为dual将帮助你。
注意:只要您只使用进程中的方法,就可以进行投射。