ぴぐノート

Good code is its own best documentation.

MFC

【MFC入門】MFCについて知ろう【Visual C++】

投稿日:

Windowsのアプリ開発で最もポピュラーな開発環境はやはりMFCでしょうか。

MFC(Microsoft Foundation Class)とはVisual Studioに組み込まれているアプリケーションフレームワークです。
MFCを使うことでウィンドウの表示やmain関数などを意識することなくプログラミングができるようになります。

MFCを使わずにウィンドウを表示させようとすると、ウィンドウの情報(サイズや形など)を一つ一つプログラミングし、またメッセージプロシージャ(ウィンドウに送られてくるメッセージを処理する関数)なども理解しなければいけませんが、この部分が大きく簡略化できます。
つまり、ウィンドウの作成をMFCに任せることで簡単にGUIアプリを作ることができます。

ボタンを表示させてメッセージボックスを出してみよう。

プロジェクトの作成方法:無料のVisual StudioをインストールしてMFCを動かそう

上記リンクと同じようにダイアログベースのプロジェクトを作成し、デフォルトで配置されている、[OK]ボタンが押されたらメッセージボックスを表示させるようなプログラムを組んでみましょう。

プロジェクト作成直後は以下のような画面表示になっていると思います。
mfc_button_001

  1. [OK]ボタンを右クリックし、[イベントハンドラーの追加]をクリックします。
    mfc_button_002
  2. ここでメッセージの種類に注目しましょう。
    [BN_CLICKED]はボタンがクリックされた場合、
    [BN_DOUBLECLICKED]はボタンがダブルクリックされた場合にイベントハンドラーを実行します。
    このようにどういった操作をされるとどんなメッセージがウィンドウに送られるのかしっかり意識しましょう。

    今回は、デフォルトのまま[BN_CLICKED]を選択してください。

  3. クラスの一覧では、イベントハンドラーをどのクラスに属させるかの指定です。
    ここもデフォルトのままで問題ありません。
  4. 関数ハンドラー名はその名の通り、関数名です。
    任意の名前で構いませんが、分かりやすい名前を付けましょう。
  5. [追加して編集]ボタンをクリックします。

上記の方法でイベントハンドラーを作成すると以下のようなコードが表示されているはずです。

CDialogEx::OnOK関数が実行されるとダイアログが閉じられます。
つまりはプログラムが終了します。

TODOコメントとOnOK関数の間にメッセージボックスを表示させる、AfxMessageBox関数を呼び出してメッセージを表示させてみましょう。

 さて、実行するとどんな動作になるでしょうか。

まとめ

ボタンの作成はとても簡単ですが、利用頻度はかなり高いです。
[OK]、[はい]、[いいえ]、[参照]、[実行]などなど、どんなアプリケーションでもほぼ使われる機能です。

今回は初めから用意されている[OK]ボタン押下時にメッセージボックスを表示させましたが、ツールバーなどからボタンを追加しても同じようにプログラミングすれば、ボタン押下時にさまざまな動作を行えます。

使用頻度が高いからこそしっかりと送られるメッセージや動作について確認しておきましょう。

スポンサーリンク

スポンサーリンク

-MFC

執筆者:

関連記事

【MFC入門】メッセージボックスにエラーコードを表示させよう

ライブラリなどを使用していると、戻り値にエラーコードを返す関数は比較的多いです。 GetLastError関数(最新のエラーコードを取得する関数)がライブラリに含まれていることもありますが、そうでない …

【MFC】マルチスレッドでプログレスバーを実装しよう その2

昨日に続き、プログレスバーをマルチスレッドを用いて実装してみましょう。 作成の目的は、 スレッド実行中はモーダルダイアログを表示させること。 モーダルダイアログではプログレスバーを表示し進捗が分かるこ …

【MFC入門】ツリーコントロールでフォルダ内のファイルを表示しよう【Visual C++】

エクスプローラーのディレクトリー構成などツリーコントロールの活用場面は多いです。 ドラッグアンドドロップされたフォルダーに格納されている、フォルダー/ファイルを表示できれば、どのファイルにアクセスする …

【MFC】フォルダー選択ダイアログの表示【Visual C++】

出力先の指定などフォルダー選択のダイアログを表示させたいことがあります。 フォルダー選択ダイアログを表示させるためには、SHBrowseForFolder関数を使います。 SHBrowseForFol …

【MFC】マルチスレッドでプログレスバーを実装しよう その3

プログレスバーをマルチスレッドを用いた実装について最後の記事です。 引き続き作成の目的は、 スレッド実行中はモーダルダイアログを表示させること。 モーダルダイアログではプログレスバーを表示し進捗が分か …