MFCからC++/CLIのフォームを呼び出す

MFCの既存のプログラムからC++/CLIのフォームを呼び出しを試してみました。

逆向きはありそうな話ですが、既存のアプリにプラグインするというか、DLLで拡張できないか試してみました。

フォームを表示する際に、ウィンドウハンドルの扱いで悩んだものの、IWin32Windowの実装クラスで渡せばOKのようです。
実装クラスは、NativWindowクラスを使ったんだけど、他に適当なのあるのかな?

さくっと書くと、こんな感じ。

extern “C” int WINAPI CallingFromMFC(HWND hWnd)
{
bool ret = true;
       
        // Form の新しいインスタンスを生成する
        CLITest::MyForm^ myForm
= gcnew CLITest::MyForm();
       
        IntPtr
managedHWND( hWnd );
        NativeWindow^
parentWindow = NativeWindow::FromHandle(managedHWND);
        // Formを表示
        myForm->ShowDialog(parentWindow);
        // Formを削除
        delete myForm;
       
        return ret; // 成功

}
しかし、CLIの書き方って、なれないと落ち着かないなぁ。

2013/10/4 追記
親ウィンドウのハンドル省略したらどうなる、って思ってやってみたら同じ動き。指定しなくてもOKなのか?


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です