みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

MFCをDLL化してコンソールアプリから起動

MFCアプリケーション(プロジェクト作成でMFCアプリケーションを選択)をDLL化して、コンソールアプリケーションからこのMFCをマルチスレッドで起動する方法を教えてください。MFCが起動後、コンソールアプリケーションの処理は次に進行し、MFCは操作可能な状態(アイコンなどがクリック可能で、青丸クルクルにはならない)にしたいです。また、コンソールアプリケーションからもMFCが操作可能にしたいです(例えば、コンソールアプリからAと入力するとファイルのオープンダイアログが開く、、、とか)。

投稿日時 - 2019-05-31 00:32:34

QNo.9621656

困ってます

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

そのような質問をする知識量が前提ではとてもここで説明できるような規模ではありません。
概要を書くと、
WindowsのアプリはWinMain関数で始まり、DLLはDllMain関数で始まりますが、MFCはそれらをラップしたインターフェースを提供していて、初期化や前提条件で差があります。
まずこの部分をDLL用に書き換える必要があります。
その際にマルチスレッド対応でプロジェクトを設定してください。

次にDLL化したアプリに外部公開インターフェースを追加します。
追加するインターフェースの一つはダイアログへメッセージを送る事ができるように、ダイアログのクラスにCallbackメソッドを用意します。
そのCallbackメソッドは自分のインスタンスに向けてメッセージを投げるように作ります。
追加したインターフェースの一つから、そのCallbackを呼ぶよう実装してください。

最後に、コンソールアプリのプロジェクトをマルチスレッド対応で構成して、main関数からスレッドを起こします。
そのスレッドでDLLを読み込み、DLLのインターフェースを呼び出してください。

投稿日時 - 2019-05-31 22:42:31

お礼

ご回答いただきありがとうございます。確かに、一つの質問に、多くを書きすぎました。もう少しバラして質問します。でも、概要は、わかりました。

投稿日時 - 2019-06-01 16:08:26

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問