2016-09-21 1 views
0

私はMFCダイアログを作成するC++メソッドを持っています。このメソッドは次のようになります。IDialog * createDialog() - ダイアログはIDialogインターフェイスから派生します。 IDialogインターフェイスにはshowDialog()メソッドが1つしかありません。C#から開いたC#ダイアログ

私はC#wpfという同じダイアログを再作成しようとしています。 C#側でC#wpfダイアログを表示するためのサポートを追加する方法はありますが、createDialog() - > showDialog()はC++から呼び出されていますか? C++側はCLIラッパーのみが許可されたままにしておかなければなりません。

+0

達成しようとしているもののかなり曖昧な説明。推測すると、C++/CLIおよび/またはCOMが必要です。 – IInspectable

+0

これは、https://support.microsoft.com/en-us/kb/828736 –

+0

の短い要約として役立つことがあります。私はこの呼び出しをC++ "createDialog() - > showDialog()"に示しています。これは、対応するMFCダイアログ。私がやろうとしているのは、MFCダイアログをC#WPFに置き換えることです。ダイアログはC++インターフェイスのIDialog – Cristian

答えて

0

私は思う非常に難しい何も...

1)クラスを作成し、それがIDialogインターフェイスを実装しています。 2)クラス属性を宣言します。ComVisible(true)

System.Runtime.InteropServicesを使用します。

// IDialogは、COMインターフェイス であれば、これは動作します[のComVisible(真)] [GUIDは(「あなたのGUIDをここに」)] //フレームワークを構築するために、ビルドから変更することができるものを生成することはできません。

public class MyClass : Window, IDialog 
{ 
    public MyClass() 
    { 
    } 

    public void showDialog() 
    { 
     // do your magic... 
    }  
} 

あなたのDLLを登録する使用する必要があります。

ます。regasm your.dll/TLB /コードベース

また、単にCOM相互運用のためのプロジェクトレジスタをマークすることができますが、それは、あなたにあなたを助けますdevマシン。

私はすでにCOMオブジェクトをインスタンス化する方法を知っていると仮定しています。

関連する問題