- ベストアンサー
MFCをDLL化してコンソールアプリから起動
MFCアプリケーション(プロジェクト作成でMFCアプリケーションを選択)をDLL化して、コンソールアプリケーションからこのMFCをマルチスレッドで起動する方法を教えてください。MFCが起動後、コンソールアプリケーションの処理は次に進行し、MFCは操作可能な状態(アイコンなどがクリック可能で、青丸クルクルにはならない)にしたいです。また、コンソールアプリケーションからもMFCが操作可能にしたいです(例えば、コンソールアプリからAと入力するとファイルのオープンダイアログが開く、、、とか)。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
そのような質問をする知識量が前提ではとてもここで説明できるような規模ではありません。 概要を書くと、 WindowsのアプリはWinMain関数で始まり、DLLはDllMain関数で始まりますが、MFCはそれらをラップしたインターフェースを提供していて、初期化や前提条件で差があります。 まずこの部分をDLL用に書き換える必要があります。 その際にマルチスレッド対応でプロジェクトを設定してください。 次にDLL化したアプリに外部公開インターフェースを追加します。 追加するインターフェースの一つはダイアログへメッセージを送る事ができるように、ダイアログのクラスにCallbackメソッドを用意します。 そのCallbackメソッドは自分のインスタンスに向けてメッセージを投げるように作ります。 追加したインターフェースの一つから、そのCallbackを呼ぶよう実装してください。 最後に、コンソールアプリのプロジェクトをマルチスレッド対応で構成して、main関数からスレッドを起こします。 そのスレッドでDLLを読み込み、DLLのインターフェースを呼び出してください。
お礼
ご回答いただきありがとうございます。確かに、一つの質問に、多くを書きすぎました。もう少しバラして質問します。でも、概要は、わかりました。