| ■説明 |
| これは、コンソールアプリケーション(MS−DOSのコマンドプロンプト)からダイアログウィンドウを表示するDLLを呼び出すプログラムです。作成の手順とポイントを説明します。(ポイントはこの色の文字です。) |
|
(1) まず、メインとなるコンソールアプリケーションを作成します。(名前は例として"main"とします。)
[新規作成]でプロジェクトの[Win32 Console Application]を選択します。種類は、[単純アプリケーション]です。すると、指定した名前のCPPファイルができ、空のmain関数ができています (2) 次に、この状態のままダイアログを表示するDLLを作成します。(名前は例として"sub"とします。) [新規作成]でプロジェクトの[MFC AppWizard (dll)]を選択します。 また、[現在のワークスペースへ追加]のチェックボックスをクリックします。後の設定はデフォルトのままです。 プロジェクト自体がツリー構造になり、このような親子関係の場合作業がしやすくなります。 ![]() (3) ワークスペースのsubのリソースに追加でダイアログを作成します。 (4) このダイアログに対応するクラスを作成します。取りあえず中身は要りません。(名前はCTestにします。) (5) sub.cppにこのダイアログを作成するグローバル関数を作成します。(名前は"display_dialog()"とします。) #include "test.cpp" // ダイアログのファイルです。 extern "C" { __declspec(dllexport) void __cdecl display_dialog(); } void display_dialog() { AFX_MANAGE_STATE(AfxGetStaticModuleState()); CTest dlg; dlg.DoModal(); } AFX_MANAGE_STATEの行でMFCを使えるようになります。説明はsub.cppの冒頭のコメントに記されています。 (6) subをビルドします (7) mainをアクティブプロジェクトにします。クラス名を右クリックするとメニューが出ます。 (8) main.cppに以下の青字部分を追加します。
#include "stdafx.h"extern "C" { __declspec(dllimport) void __cdecl display_dialog(); } int main(int argc, char* argv[]) { display_dialog(); return 0; } (9) mainにDLLのためのライブラリを追加します。
[プロジェクト]の[設定]の[リンク]の[オブジェクト/ライブラリモジュール]に/sub/debug/sub.libを追加します。([プロジェクト]の[プロジェクトへ追加]の[ファイル]で種類をライブラリファイルにし、sub.libを選択してもOKです。) (10) mainをビルドします。 (11) DLLを読み込むために[プロジェクト]の[設定]の[デバッガ]の[作業用のディレクトリ]を.\sub\debugにします。 (12) mainを実行してみてください |
| ■ファイルのダウンロード |