| 開発者 | マイクロソフト |
|---|---|
| 初回リリース | 1992年 |
| 安定リリース | 14.22.27821.0 / 2019年7月24日[1] |
| 書かれた | C++ |
| オペレーティング·システム | マイクロソフトウィンドウズ |
| ライセンス | 独自 |
| Webサイト | docs.microsoft.com/en-us/cpp/mfc/mfc-desktop-applications |
Microsoft Foundation Class ライブラリ(MFC)は、 Windows用のデスクトップ アプリケーションを開発するためのC++ オブジェクト指向 ライブラリです。
MFC は 1992 年にMicrosoftによって導入され、すぐに広く使用されるようになりました。それ以降、Microsoft は代替アプリケーション フレームワークを導入してきましたが、MFC は依然として広く使用されています。
歴史
MFC は、1992 年に Microsoft のC/C++ 7.0 コンパイラとともに、Windows API 用の極めて薄いオブジェクト指向の C++ ラッパーとして Windows の16 ビットバージョンで使用するために導入されました。当時、C++ は商用アプリケーション ソフトウェアの開発でCに取って代わり始めたばかりでした。MFC プログラムでは、直接のWindows API呼び出しが必要になることはほとんどありません。代わりに、プログラムは Microsoft Foundation Class クラスからオブジェクトを作成し、それらのオブジェクトに属するメンバー関数を呼び出します。これらの関数の多くは、対応する API 関数と同じ名前です。[2]
MFC の奇妙な点の 1 つは、多くの関数、マクロ、および標準のプリコンパイル済みヘッダー名「stdafx.h」のプレフィックスとして「Afx」が使用されていることです。初期の開発中、MFC となったものは「Application Framework Extensions」と呼ばれ、「Afx」と略されていました。Microsoft Foundation Classes (MFC) という名前は、リリース サイクルの遅い段階で採用されたため、これらの参照を変更することができませんでした。
MFC 8.0 はVisual Studio 2005でリリースされました。MFC 9.0 は Visual Studio 2008 でリリースされました。2008 年 4 月 7 日、Microsoft はVisual Studio 2008および MFC 9のアウトオブバンド アップデートとして MFC クラスの更新をリリースしました。[3]このアップデートには、リボンと関連 UIウィジェット、完全にカスタマイズ可能なツール バー、自由にフロートさせたり任意の側にドッキングしたりできるドッキング ペイン、およびドキュメント タブを含む新しいユーザー インターフェイス構造が含まれています。[4]
MFCはもともとVisual Studioの商用版の機能でした。そのため、フリーウェアのVisual C++ Expressには含まれていません。[5]ただし、2014年に導入されたVisual StudioのコミュニティエディションにはMFCが含まれています。
Borland のTurbo C++コンパイラで使用するために設計されたObject Windows Library (OWL) は、 Borlandが同時期に発表した競合製品でした。最終的に、Borland は OWL の開発を中止し、短期間 Microsoft [6]から MFC ヘッダー、ライブラリ、DLL の配布のライセンスを取得しましたが、MFC の完全な統合サポートは提供しませんでした。Borland は後に、OWL フレームワークに代わるVisual Component Library をリリースしました。
特徴
MFC は、 Windows API の一部を C++クラスでラップするライブラリであり、デフォルトのアプリケーション フレームワークを使用できるようにする機能も含まれています。クラスは、ハンドルで管理される多くの Windows オブジェクトに対して定義されるほか、定義済みのウィンドウや共通コントロールに対しても 定義されます。
MFC は導入当時、Windows メッセージ処理 (メッセージ マップ[7]経由)、例外、実行時型識別(RTTI)、シリアル化、および動的クラス インスタンス化用の C++マクロを提供していました。メッセージ処理マクロの目的は、不必要な仮想テーブルの使用を避けることでメモリ消費量を削減することと、Visual C++ が提供するさまざまなツールが言語全体を解析せずにコードを編集および操作するためのより具体的な構造を提供することでした。メッセージ処理マクロは、C++ が提供する 仮想関数メカニズムに代わるものでした。
シリアル化、例外、および RTTI のマクロは、Microsoft C++ でこれらの機能が利用可能になる数年前から存在していました。Windows NT 3.1以降の Windows オペレーティング システム用の32 ビットバージョンの MFC では、言語機能を実装したコンパイラが使用され、カスタマイズされた実装を提供する代わりに、言語機能を単純にラップするようにマクロが更新され、上位互換性が実現されました。
MFC リボン リソース エディターを使用すると、開発者はRibbonX APIのようなXMLベースの宣言型マークアップを使用する代わりに、リボンをグラフィカルに設計できます。オプションで、リボン クラスの新しいメソッド セットを呼び出すことによって、リボン コンポーネントを直接プログラムできます。開発者は、都合に合わせて、グラフィカルなリボン開発とプログラムによるリボン開発を組み合わせることができます。MFC アプリケーション ウィザードもアップグレードされ、アプリケーションでリボンを使用するかドッキング ペインを使用するかを選択するチェック ボックスなどの新機能がサポートされるようになりました。新しい機能は新しいクラスで提供されるため、古いアプリケーションも引き続き実行できます。[4]この更新は、BCGSoft の BCGControlBar Library Professional Edition をベースにしています。[8] Microsoft は、リボンのユーザーに追加のライセンス要件を課しています。[9]これらには、Microsoft UI デザイン ガイドラインに準拠する要件や、 Microsoft Officeと競合するアプリケーションでの UI の使用を禁止する反競争条項が含まれます。
MFC は、静的ライブラリをリンクするか、MFC DLL を追加することで使用できます。
バージョン
参照
- アクティブ テンプレート ライブラリ(ATL)
- GLib
- GTK
- gtkmm
- ジュース
- クォート
- 標準テンプレートライブラリ(STL)
- Windows テンプレート ライブラリ(WTL)
- Wxウィジェット
注記
- ^ Windows XPを公式にサポートするライブラリの最後のバージョン。[25]
参考文献
- ^ 「Visual Studio 2019 リリース ノート」。Msdn.microsoft.com。2019年7 月 24 日閲覧。
- ^ Visual C++ Express の概要
- ^ 「Visual C++ 2008 Feature Pack が出荷されました」。Blogs.msdn.com。2008年4 月 26 日閲覧。
- ^ ab 「新しい MFC 機能のクイック ツアー」。Blogs.msdn.com。2019年9 月 10 日閲覧。
- ^ 「Visual Studio Express Edition FAQ」。Microsoft.com。2011年6月11日時点のオリジナルよりアーカイブ。2012年1月6日閲覧。
- ^ 「Microsoft が Inprise を買収し、紛争を解決」 Techweb.com。2007 年 10 月 17 日時点のオリジナルよりアーカイブ。2012年1 月 6 日閲覧。
- ^ Williams, Mickey、David Bennett。「独自のメッセージ マップを作成する」。Inform IT。
- ^ 「BCGSoft による MFC アップデート」。Msdn2.microsoft.com。2007年11 月 16 日閲覧。
- ^ 「Visual C++ 2008 Feature Pack リリース ダウンロード ページ」。Microsoft.com。2008年5 月 16 日閲覧。
- ^ abcdefg 「MS11-025: Microsoft Foundation Class (MFC) ライブラリの脆弱性により、リモートでコードが実行される: 2011 年 4 月 12 日」。Microsoft.com。2019年6 月 10 日閲覧。
- ^ abc 「Microsoft セキュリティ情報 MS09-035 - 中: Visual Studio アクティブ テンプレート ライブラリの脆弱性により、リモートでコードが実行される可能性がある (969706)」。Microsoft.com。2012年11 月 19 日閲覧。
- ^ abc 「Active Template Library (ATL) のセキュリティ脆弱性からコンピューターを保護する」。2010 年 10 月 26 日時点のオリジナルよりアーカイブ。2010 年10 月 29 日閲覧。
- ^ 「Microsoft Visual Studio 2005 Service Pack 1 MFC セキュリティ更新プログラム」。Microsoft.com。2012年11月 19 日閲覧。
- ^ 「Visual C++ 再頒布可能パッケージはどこでダウンロードできますか?」 . 2019 年6 月 10 日閲覧。
- ^ 「FIX: .msi ファイルを使用してアプリケーションをインストールすると、そのファイルが Visual C++ 2005 ランタイム ライブラリのマージ モジュールとマージされている場合に「HRESULT: 0x80073715」エラーが発生する」。Microsoft.com。2021年 1 月 25 日。
- ^ ab vcredist/source_links/README.md > ソースリンクアーカイブ
- ^ 「Visual C++ - Visual Studio 2010 の C++ および MFC の新機能の探索」。Msdn.microsoft.com。2012年11 月 19 日閲覧。
- ^ 「Visual C++ 2013 および Visual C++ 再頒布可能パッケージの更新プログラム」。Msdn.microsoft.com。2017年1 月 8 日閲覧。
- ^ 「Visual C++ 2013 および Visual C++ 再頒布可能パッケージの更新プログラム」。Msdn.microsoft.com。2017年1 月 8 日閲覧。
- ^ 「Visual C++ 2013 再頒布可能パッケージの更新プログラム」 。2019年6 月 10 日閲覧。
- ^ 「Visual Studio 2015 Update 1」。Msdn.microsoft.com。2016年6 月 12 日閲覧。
- ^ 「Visual Studio 2015 Update 2」。Msdn.microsoft.com。2016年6 月 12 日閲覧。
- ^ 「Visual Studio 2015 Update 3」。Msdn.microsoft.com。2016年6 月 28 日閲覧。
- ^ 「Microsoft Visual Studio 2015 Update 3 (KB3165756)」。Msdn.microsoft.com。2016年8 月 28 日閲覧。
- ^ Visual Studio バージョン間の C++ バイナリ互換性
さらに読む
- プロサイス、ジェフ (1999)。『MFC による Windows プログラミング』(第 2 版) 。Microsoft Press。ISBN 9781572316959。
- シェパード、ジョージ (1996)。MFC 内部情報 (第 7 版) 。Addison - Wesley。ISBN 9780201407211。
- Kruglinski, David (1997)。Inside Visual C++ (第 4 版) 。Microsoft Press。ISBN 9781572315655。
- Microsoft (1995)。Microsoft Visual C++: MFC によるプログラミング(第2 版)。Microsoft Press。ISBN 9781556159213。
外部リンク
- サポートされている最新の Visual C++ ダウンロード - Microsoft
- Visual C++ 再頒布可能パッケージはどこからダウンロードできますか? - Microsoft
- MSDN MFC リファレンス - Microsoft
- MFC: Visual Studio 2005 以降 - Microsoft
- 次世代 Visual C++ の内部情報 (MFC 9 の主要な更新について解説) - Microsoft
