MFC アプリケーションの作成手順
次の表は、MFC アプリケーションを開発する場合の一般的な手順を示しています。
フレームワークを使ったアプリケーションの作成手順
Task (タスク) |
プログラマの作業 |
フレームワークの働き |
---|---|---|
スケルトン アプリケーションの作成 |
MFC アプリケーション ウィザードを実行します。 オプション ページで必要なオプションを設定します。 オプションとして、アプリケーションを COM コンポーネントにする、COM コンテナーにする、両方にする、オートメーションを追加する、データベースを使用できるようにする、などがあります。 |
MFC アプリケーション ウィザードがスケルトン アプリケーションのファイルを作成します。アプリケーション、ドキュメント、ビュー、フレーム ウィンドウのソース ファイル、リソース ファイル、プロジェクト ファイルなどを指定どおりに作成します。 |
独自の行またはコードを追加せずにフレームワークと MFC アプリケーション ウィザードで何ができるかを調べる |
スケルトン アプリケーションを構築し、Visual C++ で実行します。 |
実際のスケルトン アプリケーションは、[ファイル]、[編集]、[表示]、および [ヘルプ] の各メニューの標準コマンドの多くをフレームワークから派生します。 MDI アプリケーションでは、[ウィンドウ] メニューをそのまま使用できます。MDI 子ウィンドウの作成、配置、破棄はフレームワークによって管理されます。 |
アプリケーションのユーザー インターフェイスの構築 |
以下のユーザー インターフェイスをビジュアル編集するときに、Visual C++ リソース エディターを使用します。
ダイアログ エディターでは、ダイアログ ボックスもテストできます。 |
MFC アプリケーション ウィザードで作成した既定のリソース ファイルが、必要なリソースを多数提供します。 Visual C++ では、既存のリソースの編集およびリソースの新規作成を簡単にビジュアル環境で行うことができます。 |
ハンドラー関数へのメニューの割り当て |
[プロパティ] ウィンドウの [イベント] ボタンを使用して、メニューとアクセラレータをコードのハンドラー関数に関連付けます。 |
[プロパティ] ウィンドウでは、メッセージ マップ エントリと空の関数テンプレートを指定されたソース ファイルに挿入し、多数の手書きコードを管理します。 |
ハンドラーのコードの記述 |
[クラス ビュー] を使用して、ソース コード エディターの対象コードに直接ジャンプします。 ハンドラー関数のコードを埋めてください。 [クラス ビュー] の使い方とプロジェクトにコードを追加するウィザードの詳細については、「コード ウィザードを使用した機能の追加」を参照してください。 |
[クラス ビュー] はエディターを最前面に表示し、空の関数テンプレートまでスクロールし、カーソルを位置付けます。 |
ツール バーのボタンのコマンドへの割り当て |
ツール バーのそれぞれのボタンに、該当するコマンド ID を割り当てることにより、メニューまたはアクセラレータ コマンドを対応付けます。 |
ツール バー ボタンの描画、有効化、無効化、チェック ボックスのオン/オフなど、ツール バー ボタンの外観を管理します。 |
ハンドラー関数のテスト |
プログラムを再度ビルドし、Visual C++ の組み込みデバッグ ツールを使用してハンドラーが正しく動作するかをテストします。 |
ハンドラーの呼び出し方を調べるには、ステップ実行またはトレースを行います。 ハンドラーのコードが十分に記述されていれば、ハンドラーがコマンドを実行します。 フレームワークは処理されないメニュー項目とツール バー ボタンを自動的に無効にします。 |
ダイアログ ボックスの追加 |
ダイアログ エディターを使用して、ダイアログ テンプレート リソースをデザインします。 次に、ダイアログ クラスを作成し、ダイアログ ボックスを処理するコードを作ります。 |
ダイアログ ボックスを管理し、入力された情報を取得する手段を提供します。 |
ダイアログ ボックスのデータの初期化、妥当性検査、取得 |
ダイアログ ボックスのコントロールをどのように初期化して、妥当性を検査するかを定義できます。 Visual Studio を使用して、ダイアログ クラスにメンバー変数を追加し、ダイアログ ボックスのコントロールに対応付けます。 入力したデータをそれぞれのコントロールがチェックするための規則を指定します。 必要に応じて、独自の妥当性検査を用意します。 |
ダイアログ ボックスの初期化と妥当性検査を管理します。 不正な情報が入力されると、フレームワークはメッセージ ボックスを表示し、再入力を促します。 |
追加するクラスの作成 |
[クラス ビュー] を使用して、MFC アプリケーション ウィザードで自動的に追加されない、ドキュメント、ビュー、およびフレーム ウィンドウを追加できます。 また、データベース レコードセット クラスやダイアログ クラスなども追加できます。 [クラス ビュー] を使用すると、MFC の派生クラス以外のクラスを作成できます。 |
[クラス ビュー] は、これらのクラスをソース ファイルに追加するので、処理するコマンドとの接続を容易に定義できます。 |
すぐ使えるコンポーネントをアプリケーションへ追加 |
さまざまな項目を追加するには、New Item dialog boxを使用します。 |
この種のアイテムはアプリケーションに簡単に統合できるため、作業量を大幅に減らすことができます。 |
ドキュメント クラスの実装 |
アプリケーション固有のドキュメント クラスを実装します。 データ構造体を保持するメンバー変数を追加します。 また、データへのインターフェイスを提供するメンバー関数を追加します。 |
ドキュメント データ ファイルとのやり取りの方法をフレームワークは既に認識しています。 つまり、ドキュメント ファイルのオープンとクローズ、ドキュメント データの読み取りと書き込み、ほかのユーザー インターフェイスの処理などです。 プログラマはドキュメント データをどのように操作するかだけに集中できます。 |
[開く]、[上書き保存]、[名前を付けて保存] の各コマンドの実装 |
ドキュメントの Serialize メンバー関数のコードを記述します。 |
フレームワークは [ファイル] メニューの [開く]、[上書き保存]、および [名前を付けて保存] の各コマンドのダイアログ ボックスを表示します。 また、Serialize メンバー関数で、指定されたデータ形式に従ってドキュメントを読み書きします。 |
ビュー クラスの実装 |
ドキュメントに対応した 1 つ以上のビュー クラスを実装します。 [クラス ビュー] を使用してユーザー インターフェイスに割り当てられるビュー クラスのメンバー関数を実装します。 CListView や CTreeView など、さまざまな CView 派生クラスも使用できます。 |
ドキュメントとそのビューの大部分のリレーションシップを管理します。 ビューのメンバー関数では、ビューのドキュメントにアクセスし、そのイメージを画面上またはプリンターに出力します。また、ユーザーの編集コマンドに応じてドキュメントのデータ構造体を更新します。 |
既定の印刷機能の拡張 |
複数ページの印刷をサポートする必要があるときは、ビューのメンバー関数をオーバーライドします。 |
[ファイル] メニューの [印刷]、[ページ設定]、[印刷プレビュー] の各コマンドをサポートします。 プログラマはドキュメントを複数ページにどのように分割するかをフレームワークに知らせる必要があります。 |
スクロール機能の追加 |
スクロール機能が必要なときは、CScrollView からビュー クラスを派生させます。 |
ビューは表示ウィンドウが小さすぎると自動的にスクロール バーを付加します。 |
フォーム ビューの作成 |
ダイアログ テンプレート リソースを基にしたビューを使用するときは、CFormView からビュー クラスを派生させます。 |
ビューは、コントロールを表示するのに、ダイアログ テンプレート リソースを使用します。 ビュー内のコントロール間をタブを使用して移動できます。 |
データベース フォームの作成 |
フォーム ベースのデータベース アクセス型アプリケーションを作成するときは、ビュー クラスを CRecordView (ODBC プログラムの場合) から派生させます。 |
このビューはフォーム ビューと同じように動作しますが、そのコントロールはデータベース テーブルを表す CRecordset オブジェクトのフィールドに接続されています。 コントロールとレコードセット間のデータの移動は MFC が行います。 |
簡易テキスト エディターの作成 |
作成したビューを簡易テキスト エディターにする場合は、CEditView か CRichEditView からビュー クラスを派生させます。 |
ビューでは、関数を編集でき、クリップボードのサポート、およびファイルの入出力を実行できます。 CRichEditView には、書式付きテキストが表示されます。 |
分割ウィンドウの追加 |
分割ウィンドウをサポートするには、SDI フレーム ウィンドウまたは MDI 子ウィンドウに CSplitterWnd オブジェクトを追加し、ウィンドウのメンバー関数 OnCreateclient で分割ウィンドウを作成します。 |
分割ボックス コントロールをスクロール バーに付加し、ビューの複数ペイン分割を管理します。 ウィンドウを分割すると、フレームワークは別のビュー オブジェクトを作成し、ドキュメントに割り当てます。 |
アプリケーションの構築、テスト、デバッグ |
アプリケーションを構築、テスト、デバッグするには、Visual C++ の機能を使用します。 |
Visual C++ では、コンパイル、リンクなどのオプションを調整できます。 また、ソース コードおよびクラス構造体を参照できます。 |