4

是否有可能有一个通过的 COM 方法HWND?在我的对象中使用以下方法CoCreateInstance返回DISP_E_BADVARTYPE0x80020008):

STDMETHODIMP ShowDialog(HWND hWndParent);

到目前为止,我通过传递一个OLE_HANDLE然后铸造它来解决这个问题,但感觉就像一个杂物:

STDMETHODIMP ShowDialog(OLE_HANDLE hWndParent);
4

2 回答 2

2

我认为 HWND 是一个指向结构的指针,这就是为什么你不能在 IDL 中使用它的原因。
如果您查看 Microsoft Typelibs,您将看到有关如何传递句柄的各种变化(从 int 到 long 到 HANDLE)。

于 2009-04-30T20:40:12.153 回答
1

您的界面可能注册为“双重”,而 HWND 不是 OLE 自动化支持的类型之一。您的界面是否需要与 IDispatch 兼容(您是否需要从脚本或后期绑定语言中调用它)?如果没有,从 IUnknown 而不是 IDispatch 派生并且不注册为双重将帮助您。

注意:只要您只使用过程中的方法,铸造就可以了。

于 2009-04-30T21:50:00.237 回答