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 オートメーションでサポートされているタイプの 1 つではありません。インターフェイスは IDispatch 互換である必要がありますか (スクリプトまたは遅延バインド言語から呼び出す必要がありますか)? そうでない場合は、IDispatch ではなく IUnknown から派生させ、デュアルとして登録しないことで解決できます。

注意: メソッドをインプロセスでのみ使用している限り、キャストは問題ありません。

于 2009-04-30T21:50:00.237 に答える