MFC アプリケーションの作成手順

更新 : 2007 年 11 月

次の表は、MFC アプリケーションを開発する場合の一般的な手順を示しています。

フレームワークを使ったアプリケーションの作成手順

作業

プログラマの作業

フレームワークの働き

スケルトン アプリケーションの作成

MFC アプリケーション ウィザードを実行します。オプション ページで必要なオプションを設定します。オプションとして、アプリケーションを COM コンポーネントにする、COM コンテナにする、両方にする、オートメーションを追加する、データベースを使用できるようにする、などがあります。

MFC アプリケーション ウィザードがスケルトン アプリケーションのファイルを作成します。アプリケーション、ドキュメント、ビュー、フレーム ウィンドウのソース ファイル、リソース ファイル、プロジェクト ファイルなどを指定どおりに作成します。

独自の行またはコードを追加せずにフレームワークと MFC アプリケーション ウィザードで何ができるかを調べる

スケルトン アプリケーションを構築し、Visual C++ で実行します。

実際のスケルトン アプリケーションは、[ファイル]、[編集]、[表示]、および [ヘルプ] の各メニューの標準コマンドの多くをフレームワークから派生します。MDI アプリケーションでは、[ウィンドウ] メニューをそのまま使用できます。MDI 子ウィンドウの作成、配置、破棄はフレームワークによって管理されます。

アプリケーションのユーザー インターフェイスの構築

以下のユーザー インターフェイスをビジュアル編集するときに、Visual C++ リソース エディタを使用します。

  • メニューの作成

  • アクセラレータの定義

  • ダイアログ ボックスの作成

  • ビットマップ、アイコン、カーソルを作成して編集します。

  • MFC アプリケーション ウィザードで作成されたツール バーの編集

  • その他のリソースの作成と編集

ダイアログ エディタでは、ダイアログ ボックスもテストできます。

MFC アプリケーション ウィザードで作成した既定のリソース ファイルが、必要なリソースを多数提供します。Visual C++ では、既存のリソースの編集およびリソースの新規作成を簡単にビジュアル環境で行うことができます。

ハンドラ関数へのメニューの割り当て

[プロパティ] ウィンドウの [イベント] ボタンを使用して、メニューとアクセラレータをコードのハンドラ関数に関連付けます。

[プロパティ] ウィンドウでは、メッセージ マップ エントリと空の関数テンプレートを指定されたソース ファイルに挿入し、多数の手書きコードを管理します。

ハンドラのコードの記述

[クラス ビュー] を使用して、ソース コード エディタの対象コードに直接ジャンプします。ハンドラ関数のコードを埋めてください。[クラス ビュー] の使い方とプロジェクトにコードを追加するウィザードの詳細については、「コード ウィザードを使用した機能の追加」を参照してください。

[クラス ビュー] はエディタを最前面に表示し、空の関数テンプレートまでスクロールし、カーソルを位置付けます。

ツール バーのボタンのコマンドへの割り当て

ツール バーのそれぞれのボタンに、該当するコマンド ID を割り当てることにより、メニューまたはアクセラレータ コマンドを対応付けます。

ツール バー ボタンの描画、有効化、無効化、チェック ボックスのオン/オフなど、ツール バー ボタンの外観を管理します。

ハンドラ関数のテスト

プログラムを再度ビルドし、Visual C++ の組み込みデバッグ ツールを使用してハンドラが正しく動作するかをテストします。

ハンドラの呼び出し方を調べるには、ステップ実行またはトレースを行います。ハンドラのコードが十分に記述されていれば、ハンドラがコマンドを実行します。フレームワークは処理されないメニュー項目とツール バー ボタンを自動的に無効にします。

ダイアログ ボックスの追加

ダイアログ エディタを使用して、ダイアログ テンプレート リソースをデザインします。次に、ダイアログ クラスを作成し、ダイアログ ボックスを処理するコードを作ります。

ダイアログ ボックスを管理し、入力された情報を取得する手段を提供します。

ダイアログ ボックスのデータの初期化、妥当性検査、取得

ダイアログ ボックスのコントロールをどのように初期化して、妥当性を検査するかを定義できます。Visual Studio を使用して、ダイアログ クラスにメンバ変数を追加し、ダイアログ ボックスのコントロールに対応付けます。入力したデータをそれぞれのコントロールがチェックするための規則を指定します。必要に応じて、独自の妥当性検査を用意します。

ダイアログ ボックスの初期化と妥当性検査を管理します。不正な情報が入力されると、フレームワークはメッセージ ボックスを表示し、再入力を促します。

追加するクラスの作成

[クラス ビュー] を使用して、MFC アプリケーション ウィザードで自動的に追加されない、ドキュメント、ビュー、およびフレーム ウィンドウを追加できます。また、データベース レコードセット クラスやダイアログ クラスなども追加できます。[クラス ビュー] を使用すると、MFC の派生クラス以外のクラスを作成できます。

[クラス ビュー] は、これらのクラスをソース ファイルに追加するので、処理するコマンドとの接続を容易に定義できます。

すぐ使えるコンポーネントをアプリケーションへ追加

[新しい項目] ダイアログ ボックスを使用して各種アイテムを追加します。

この種のアイテムはアプリケーションに簡単に統合できるため、作業量を大幅に減らすことができます。

ドキュメント クラスの実装

アプリケーション固有のドキュメント クラスを実装します。データ構造体を保持するメンバ変数を追加します。また、データへのインターフェイスを提供するメンバ関数を追加します。

ドキュメント データ ファイルとのやり取りの方法をフレームワークは既に認識しています。つまり、ドキュメント ファイルのオープンとクローズ、ドキュメント データの読み取りと書き込み、ほかのユーザー インターフェイスの処理などです。プログラマはドキュメント データをどのように操作するかだけに集中できます。

[開く]、[上書き保存]、[名前を付けて保存] の各コマンドの実装

ドキュメントの Serialize メンバ関数のコードを記述します。

フレームワークは [ファイル] メニューの [開く]、[上書き保存]、および [名前を付けて保存] の各コマンドのダイアログ ボックスを表示します。また、Serialize メンバ関数で、指定されたデータ形式に従ってドキュメントを読み書きします。

ビュー クラスの実装

ドキュメントに対応した 1 つ以上のビュー クラスを実装します。[クラス ビュー] を使用してユーザー インターフェイスに割り当てられるビュー クラスのメンバ関数を実装します。CListViewCTreeView など、さまざまな CView 派生クラスも使用できます

ドキュメントとそのビューの大部分のリレーションシップを管理します。ビューのメンバ関数では、ビューのドキュメントにアクセスし、そのイメージを画面上またはプリンタに出力します。また、ユーザーの編集コマンドに応じてドキュメントのデータ構造体を更新します。

既定の印刷機能の拡張

複数ページの印刷をサポートする必要があるときは、ビューのメンバ関数をオーバーライドします。

[ファイル] メニューの [印刷]、[ページ設定]、[印刷プレビュー] の各コマンドをサポートします。プログラマはドキュメントを複数ページにどのように分割するかをフレームワークに知らせる必要があります。

スクロール機能の追加

スクロール機能が必要なときは、CScrollView からビュー クラスを派生させます。

ビューは表示ウィンドウが小さすぎると自動的にスクロール バーを付加します。

フォーム ビューの作成

ダイアログ テンプレート リソースを基にしたビューを使用するときは、CFormView からビュー クラスを派生させます。

ビューは、コントロールを表示するのに、ダイアログ テンプレート リソースを使用します。ビュー内のコントロール間をタブを使用して移動できます。

データベース フォームの作成

フォーム ベースのデータベース アクセス型アプリケーションを作成するときは、ビュー クラスを CRecordView (ODBC プログラムの場合) から派生させます。

このビューはフォーム ビューと同じように動作しますが、そのコントロールはデータベース テーブルを表す CRecordset オブジェクトのフィールドに接続されています。コントロールとレコードセット間のデータの移動は MFC が行います。

簡易テキスト エディタの作成

作成したビューを簡易テキスト エディタにする場合は、CEditViewCRichEditView からビュー クラスを派生させます。

ビューは、編集機能、クリップボードのサポート、ファイル入出力を提供します。CRichEditView は、書式付きテキストを提供します。

分割ウィンドウの追加

分割ウィンドウをサポートするには、SDI フレーム ウィンドウまたは MDI 子ウィンドウに CSplitterWnd オブジェクトを追加し、ウィンドウのメンバ関数 OnCreateclient で分割ウィンドウを作成します。

分割ボックス コントロールをスクロール バーに付加し、ビューの複数ペイン分割を管理します。ウィンドウを分割すると、フレームワークは別のビュー オブジェクトを作成し、ドキュメントに割り当てます。

アプリケーションの構築、テスト、デバッグ

アプリケーションを構築、テスト、デバッグするには、Visual C++ の機能を使用します。

Visual C++ では、コンパイル、リンクなどのオプションを調整できます。また、ソース コードおよびクラス構造体を参照できます。

参照

概念

OLE アプリケーションの作成手順

ActiveX コントロールの作成手順

データベース アプリケーションの作成手順

フレームワークを使ったアプリケーションの作成