2009-04-30 13 views
1

HWNDを渡すCOMメソッドを使用できますか?COMメソッドでHWNDを渡すことはできますか?

STDMETHODIMP ShowDialog(HWND hWndParent); 

これまでのところ、私はそれをキャストし、その後OLE_HANDLEを渡すことで、この問題の周りを取得していますが、それはcludgeように感じている:

STDMETHODIMP ShowDialog(OLE_HANDLE hWndParent); 
私のオブジェクトの以下のメソッド CoCreateInstance戻り DISP_E_BADVARTYPE0x80020008)付き

答えて

2

私はHWNDがなぜあなたがIDLでそれを使用することができない構造体thatsへのポインタだと思います。
Microsoft Typelibsを見ると、ハンドルを渡す方法のバリエーションがすべて表示されます(intからlong、HANDLEへ)。

1

あなたのインターフェイスはおそらく "dual"として登録されており、HWNDはOLEオートメーションでサポートされているタイプの1つではありません。あなたのインターフェイスはIDispatchと互換性がある必要がありますか(スクリプティングか遅い言語から呼び出す必要がありますか?)そうでない場合は、IDispatchではなくIUnknownから派生し、デュアルとして登録しないとあなたを助けます。

NB:インプロセスでのみメソッドを使用している限り、キャストは大丈夫です。

関連する問題