次の方法で共有


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

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

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

Task (タスク)

プログラマの作業

フレームワークの働き

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

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

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

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

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

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

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

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

  • メニューの作成

  • アクセラレータの定義

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

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

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

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

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

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

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

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

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

ハンドラーのコードの記述

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

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

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

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

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

ハンドラー関数のテスト

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

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

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

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

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

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

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

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

追加するクラスの作成

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

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

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

さまざまな項目を追加するには、New Item dialog boxを使用します。

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

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

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

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

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

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

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

ビュー クラスの実装

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

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

既定の印刷機能の拡張

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

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

スクロール機能の追加

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

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

フォーム ビューの作成

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

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

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

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

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

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

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

ビューでは、関数を編集でき、クリップボードのサポート、およびファイルの入出力を実行できます。 CRichEditView には、書式付きテキストが表示されます。

分割ウィンドウの追加

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

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

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

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

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

参照

概念

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

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

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

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