- ベストアンサー
別のDLLのダイアログを・・・
VC++.NETでMFCアプリを開発しています。 コマンド側から、別のDLLのダイアログをCreateし、ShowWindow()したところで例外が発生します。 コマンド側は通常のDLLで作成し、「staticライブラリでMFCを使用する」で使用し、 ダイアログ側は拡張DLLで作成し、「共有DLLでMFCを使用する」で使用しております。 Create()するところで、コマンドのポインタをダイアログに渡すと例外が発生します。 理由がわかりません。教えてくださいm(__)m 説明が足りなければ補足いたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
一番手っ取り早いのは、AfxSetResourceHandle()でダイアログリソースの読みこみ対象をDLLに置き換える。
その他の回答 (1)
- taka_tetsu
- ベストアンサー率65% (1020/1553)
>コマンド側から、別のDLLのダイアログをCreateし、ShowWindow()したところで例外が発生します。 てっきり「別のDLLのダイアログをCreate」って書いてあったんで、「別のDLLがリソースを持つダイアログを」 って解釈で回答しちゃったんですが。 これって、実際にダイアログのCreateメソッドを呼んでいるのはどこですか?呼び元のDLL?呼び先? >Create()するところで、コマンドのポインタをダイアログに渡すと例外が発生します。 ポインタってなんのポインタですか? ポインタを渡すと例外って、渡さないと例外が発生しないんですか? 渡すと、渡すだけで例外が発生していますか? 何かの処理をして例外が発生するんですか? 例外が発生する場所は特定できてますか? あと、呼び元のEXE、それぞれのDLLのビルドタイプはDebugビルド、またはReleaseビルドのどちらかに 統一されていますか?
補足
AfxSetResourceHandle()を使用して DLLに置き換えてみましたが、うまく行きません。 //元のインスタンスを取得 m_hBaseInstance = AfxGetResourceHandle(); //MFCの動的接続 AFX_MANAGE_STATE(AfxGetStaticModuleState()); //MFCのインスタンスハンドルを取得 m_hMFCInstance = AfxGetResourceHandle(); とやっているんですが、元のハンドルと新しいハンドルの値が同じになります。 何か他に設定が必要なんでしょうか???