• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:DLLでダイアログ)

DLLでダイアログ作成に関する問題

このQ&Aのポイント
  • VC++6.0でMFCを使いDLLを作成し、ダイアログボックスを作成して表示させる方法について質問です。
  • DLL関数のソースファイルには、TestDlgというダイアログと、dlg2というダイアログがありますが、ダイアログが表示されません。
  • AfxMessageBox関数を使ったときにはメッセージボックスが表示されますが、ダイアログが表示されない原因を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
noname#2009
noname#2009
回答No.1

理由としては 1.ダイアログ側で初期化時に不整合 2.リソースIDのバッティング 1の場合・・・ダイアログをEXEで単独で表示できるかを 確認したらよいかと思います。 2またはダイアログ側に問題が無い場合・・・DLLでのダイ アログ使用時のトラブルは多分大体こっちです。 DLLと呼び出し側EXEの「resource.h」でコントロー ルIDが重複しているとダイアログは表示されません。 重複ID値のリソースで数値を変更して(リソースエディ タの[プロパティ][ID]で『IDC_XXX=301』のように入れ る)表示されるようになれば、これが原因です。 根本的な解決は共有DLLなら(普通こっち) --------------------------------------- int WINAPI DllFunc( CString &p_rcStr, CWnd *p_pcWnd ) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); //←コレ --------------------------------------- を先頭行に入れてください。参考↓ http://www-kobayashi.ctrl.titech.ac.jp/members/mtanaka/vc_old/dll/dlg.html 拡張DLLなら、↓の参考URLから「拡張DLLの リソース」に飛んで見て下さい(DLLインスタンスハン ドルは DllMain から取る)

参考URL:
http://homepage2.nifty.com/DSS/VCPP/DLL/dllresource.htm
ystk
質問者

お礼

有り難うございます!!!! IDの重複だったようです。 AFX_MANAGE_STATE(AfxGetStaticModuleState()); //←コレ で一発解決でした。 とても助かりました。

関連するQ&A