2009-04-30 57 views
1

是否有可能通過一個COM方法通過HWND?隨着我的對象CoCreateInstance以下方法返回DISP_E_BADVARTYPE0x80020008):我可以在COM方法中傳遞HWND嗎?

STDMETHODIMP ShowDialog(HWND hWndParent); 

到目前爲止,我越來越圓這個問題通過傳遞OLE_HANDLE然後鑄造它,但它的感覺就像一個cludge:

STDMETHODIMP ShowDialog(OLE_HANDLE hWndParent); 

回答

2

我認爲HWND是一個指向結構的指針,這就是爲什麼你不能在IDL中使用它。
如果你看看微軟Typelibs,你會看到關於如何傳遞句柄(從int到long到HANDLE)的各種變體。

1

您的接口可能註冊爲「雙重」,並且HWND不是OLE自動化支持的類型之一。你的界面是否需要與IDispatch兼容(你需要從腳本語言還是後期語言中調用它)?如果沒有,從IUnknown派生而不是IDispatch,而不是註冊爲雙重將幫助你。

注意:只要您只使用過程中的方法,鑄造就可以。

相關問題