ぴぐノート

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関数(最新のエラーコードを取得する関数)がライブラリに含まれていることもありますが、そうでない …

【OpenCV】MFCのピクチャーコントロールに描画しよう!

前回、OpenCVを使って画像の回転や二値化などを行って動作確認をしました。 今回はMFCでダイアログベースのアプリケーションを作成し、ピクチャーコントロールにOpenCVで読み込んだ画像を表示させて …

【MFC入門】エディットコントロールの使い方【Visual C++】

前回はボタンが押された際のイベントハンドラーを実装しました。 今回はボタンと同じく利用機会の多いEdit Controlについて実装してみましょう。 ダイアログエディターからEdit Controlを …

【Visual C++】フルパスを指定してフォルダー階層を作成する。

MFCなどでファイル走査などのプログラミングを行っていると、D&D(ドラッグアンドドロップ)されたフォルダー内の全ファイル(サブフォルダー含め)に何か処理を行い、同じような階層を維持したまま別 …

【MFC入門】ダイアログにファイルをドラッグアンドドロップしよう【Visual C++】

ファイル操作を行うツールなどを作成する際には、ファイルをドラッグアンドドロップできると便利です。 ファイルがどこにあるか分からない場合などは参照させることも多いと思いますが、プログラムやファイルの検証 …