4

シナリオ:
C++ アプリケーションを WinRT/Metro スタイルに移行しようとしています。このアプリケーションは、クラスIDispatchImplを使用して IDispatch インターフェイスを実装する ATL/COM オブジェクトを使用しますが、MSDN によれば、Metro Style アプリケーションでは IDispatchImpl を使用できません。

私の ATL/COM クラスは次のようになります。

class MyATLClass :
    public IDispatchImpl<IMyDispInterface, &IID_IMyDispInterface, &LIBID_MYLIB, 1, 0>, 
    public CComObjectRoot,
    public CComCoClass<MyATLClass,&CLSID_MyATLClass>
{
    ...
}

質問:
WinRT で IDispatchImpl に代わるものはありますか?

置換には、たとえば、さまざまなクラスから派生させたり、IDL ファイルを破棄したりすることが含まれます。私の最終的な目標は、MyATLClass のインスタンスで QueryInterface を実行し、IMyDispInterface を介して参照を取得できるようにすることです。すべてのファイル (ライブラリとアプリケーション) を 1 つのプロジェクトに含めることもできますが、可能であれば IMyDispInterface 参照が使用されているコードを変更したくありません。

4

1 に答える 1

2

このシナリオでは、COM/ATL クラスを WRL ベースのコンポーネントとして再実装することがおそらく最良の選択です (Larry に感謝します)。詳細については、次のビデオ投稿を参照してください。

デスクトップ アプリを Metro スタイル アプリに移植する

Windows ランタイム ライブラリ (WRL)

于 2012-07-12T17:49:45.997 に答える