- - PR -
VC++.NET 2005でCLRからMFCを呼び出す
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-12-20 17:51
とりあえず、DoModalの戻り値を確認してみてください。
どのような値なのかは、MSDNをきちんと確認してください。 ちなみに、適当なActiveXコントロールがないので私は実際に試す ようなことはやりませんので。 # なんか、簡単に出来るのであれば実験するかもしれない。 | ||||
|
投稿日時: 2006-12-20 18:35
DoModalの戻り値は-1でした。
MFCのソースの中を追っかけてみたら、dlgcore.cppの中の BOOL CWnd::CreateDlgIndirect(LPCDLGTEMPLATE lpDialogTemplate, CWnd* pParentWnd, HINSTANCE hInst) メソッドの中の、 hWnd = ::CreateDialogIndirect(hInst, lpDialogTemplate, pParentWnd->GetSafeHwnd(), AfxDlgProc); #ifdef _DEBUG dwError = ::GetLastError(); #endif で、hWhdにNULLがかえっているようでした。ただ、その直後のGetLastError()は エラーは0を返しており、エラーがないような感じでした。 引き続き調べてみますが、なんかどつぼにはまりそう・・・ ![]() [ メッセージ編集済み 編集者: maru 編集日時 2006-12-20 18:36 ] | ||||
|
投稿日時: 2006-12-20 19:13
MFCのGUIクラスと、.NetFrameworkのGUIクラスを混在させた時点で、九割九分九厘どつぼにはまると思います。私ならそれ以上追わないです。 プログラマから見れば一つのダイアログクラスかもしれませんが、実際にはスパゲッティとかした巨大なフレームワークが背後で動いています。通常はスレッドに一つのメッセージループが動作してイベントを駆動させているわけですが、混在させるということは2つのメッセージループが動作しているわけで、この時点でゾっとします。その状態でMFCと.NET Frameworkのメッセージパッシングシステムが、双方とも問題なく共存するなんて到底思えません。MFCと.NET Fraemworkの双方に内部実装に精通しているなら、問題となる部分にパッチを当てたり、問題を起こすようなコーディングを避けられるかもしれませんが、私には到底無理です。だから設計の段階で避けます。 MFCアプリケーションから、.NETの非GUI系のクラスを使ったり、或いは逆に.NET FraemworkのGUIアプリケーションからCString等の非GUI系クラスを使うならともかく、両方のGUIを混在させるのは至難の業だと思います。 |