|
分類:[C++/CLI]
はじめまして。 今、アプリケーションをC#で開発しようと思っているのですが、C++(MFC)の資産をなるべく使いたいと思っています。 そこで、C#からC++/CLIを経由して、非マネージのC++のコードを呼び出したいのですが、自作の関数等は問題なく 呼び出せたのですが、CWndをC#のウィンドウに貼ろうと思い、C++/CLIでCWnd::Create()を呼んでやると、 MFC内でアサートが出てしまいます。そこまではデバッガで追えません。
C#では、親ウィンドウのハンドルを以下の様にして取得しています System.IntPtr hWnd = System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle;
これをC++/CLIで、以下の様にして、親のCWnd*を求めています。 HWND hParent = (HWND)hWnd.ToPointer(); CWnd* pParent = CWnd::FromHandle(hParent);
そして、C++/CLIでnewで作ったCWndに対して、Create()を呼んでいます。 CRect crPrev.SetRect(0, 0, 320, 320); m_pWnd->Create(NULL, (LPCTSTR)"Preview", WS_CHILD | WS_VISIBLE, crPrev, pParent, 0);
しかし、このCreate内でアサートが表示され、コードを追えません。
MFCのCWndなどをC#から使いたい場合は、どうしたら良いでしょうか? お知恵を拝借できれば助かります。 よろしくお願いします。
|