MFCとは?最小のMFCアプリケーションを作って入門する

公開日:
更新日:
目次

「MFC」という単語を耳にして「何のことだろう?」と気になった人、または 既存のMFCコードのメンテナンスを引き継いだ人 向けの記事です。MFC が何かをまず説明し、続いて最小構成のMFCアプリを実装して動かすところまで進めます。「MFCの情報が WEBに少なくて困った」という自分の体験から書いています[1]

MFCとは

Image from Gyazo

MFC は Microsoft Foundation Class の略で、Windows アプリケーションを C++ で作るためのライブラリ(フレームワーク)です。簡単に言えば「Windows のプログラムを書くときに使えるコードの集まり」で、Microsoft が公式に提供しています[1:1]

MFC で何ができるか

Windows OSが提供している基本機能(API)に直接アクセスする「Windows API」というものがありますが、これはC言語ベースで書く必要があり、ウィンドウ表示一つにも数十行のコードが必要になります。MFC を使うとそれらの定型処理がC++のクラスとしてまとまっていて、ずっと少ないコード量で同じ機能を実現 できます。

MFC の現状の立ち位置

正直に言うと、新規のWindowsアプリ開発で MFC が選ばれることはほぼありません。現在は次の技術が主流です。

  • WPF(XAML + .NET、デスクトップアプリ)
  • WinUI 3 / .NET MAUI(モダンなWindows/クロスプラットフォーム)
  • Avalonia(クロスプラットフォーム)

ただし MFC は 既存のレガシーアプリのメンテナンス や、Windows APIを直接書くより楽にアプリを作りたい場面 では今も使われます。歴史的経緯で MFC が残っている社内アプリやツールに触れる機会は意外とあります。

環境構築

MFC を使うには Visual Studio が必要です。すでにあれば飛ばしてOK、無ければ個人利用なら無料の Visual Studio Community が使えます。

Image from Gyazo

Visual Studio で MFC を扱うにはインストール時にいくつか追加コンポーネントを選ぶ必要があります。手順は別記事にまとめました。

MFCをVisual Studioで始めるための環境構築 (2019対応)

最小のMFCプログラム

環境ができたら、最小構成のMFCアプリを書いて動かしてみます。Visual Studioで .cpp ファイルを作って下記のコードを貼り付け、実行してみてください。

#include <afxwin.h>  // MFCに必要なクラスが定義されている

// ウィンドウクラスを CFrameWnd から継承して作成
class CMainWin : public CFrameWnd {
public:
  CMainWin();
  DECLARE_MESSAGE_MAP()
};

CMainWin::CMainWin() {
  Create(NULL, _T("最小のMFCプログラム"));
}

// アプリケーションクラスを CWinApp から継承して作成
class CApp : public CWinApp {
public:
  BOOL InitInstance();
};

BOOL CApp::InitInstance() {
  m_pMainWnd = new CMainWin;
  m_pMainWnd->ShowWindow(m_nCmdShow);
  m_pMainWnd->UpdateWindow();
  return TRUE;
}

BEGIN_MESSAGE_MAP(CMainWin, CFrameWnd)
END_MESSAGE_MAP()

CApp App;

実行するとタイトルに 最小のMFCプログラム と書かれた真っ白なウィンドウが起動します。

Image from Gyazo

コードの読み解き

このわずか30行ほどに、MFC アプリの基本構造が詰まっています。

  • CWinApp を継承した アプリケーションクラスCApp)が起動の入り口
  • CFrameWnd を継承した ウィンドウクラスCMainWin)がメインウィンドウを表現
  • BEGIN_MESSAGE_MAPEND_MESSAGE_MAPメッセージマップ が、ボタン押下などのイベント処理を定義する場所(今は空)
  • 最終行の CApp App; がグローバルインスタンスを作って、これがあるだけで MFC ランタイムが起動

ここからボタンやテキストボックスを追加していくと、本格的なWindowsアプリへと発展させられます。

まとめ

MFC は古めの技術ですが、Windows APIより楽にC++でWindowsアプリが書けるフレームワークとして、レガシーアプリ保守や軽い社内ツール作成では今も役に立ちます。最小構成は30行程度で動かせるので、雰囲気を掴むには十分です。本格的に始める場合は別記事の Visual Studio 環境構築 も合わせてご覧ください。

参考文献

脚注
  1. MFC Desktop Applications - Microsoft Learn (2026-05-10 アクセス) ↩︎ ↩︎