Microsoft Foundation Class ライブラリ(MFC) は、Windows用のデスクトップ アプリケーションを開発するためのC++ オブジェクト指向 ライブラリです。

MFCは1992年にMicrosoftによって導入され、瞬く間に広く普及しました。Microsoftはその後も代替アプリケーションフレームワークを導入してきましたが、MFCは依然として広く使用されています。

歴史

MFCは1992年、MicrosoftのC/C++ 7.0コンパイラとともに、16ビット版WindowsでWindows API用の極めて軽量なオブジェクト指向C++ラッパーとして導入されました。当時、商用アプリケーションソフトウェアの開発において、 C++がC言語に取って代わり始めたばかりでした。MFCプログラムでは、 Windows APIを直接呼び出すことはほとんどありません。代わりに、プログラムはMicrosoft Foundation Classクラスからオブジェクトを作成し、それらのオブジェクトに属するメンバー関数を呼び出します。これらの関数の多くは、対応するAPI関数と名前を共有しています。[2]

MFCの特徴の一つは、多くの関数、マクロ、そして標準プリコンパイル済みヘッダー名「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 日に、マイクロソフトは Visual Studio 2008 および MFC 9 の帯域外更新として MFC クラスの更新をリリースしました。[3] [4] [5]この更新には、リボンと関連 UI ウィジェット、完全にカスタマイズ可能なツール バー、自由にフローティングまたは任意の側にドッキングできるドッキング ペイン、およびドキュメントタブを含む新しいユーザーインターフェイス構造が含まれています。[6]

MFCは当初、Visual Studioの商用版の機能でした。そのため、フリーウェアのVisual C++ Expressには含まれていません。[7]ただし、2014年に導入された Visual StudioのCommunityエディションにはMFCが含まれています。

BorlandのTurbo C++コンパイラ向けに設計されたObject Windows Library (OWL)は、Borlandがほぼ同時期に発表した競合製品でした。最終的にBorlandはOWLの開発を中止し、MFCのヘッダー、ライブラリ、DLLの配布をMicrosoft [8]から短期間ライセンス供与されましたが、MFCへの完全な統合サポートは提供されませんでした。Borlandは後に、OWLフレームワークに代わる Visual Component Libraryをリリースしました。

特徴

MFCは、Windows APIの一部をC++クラスでラップしたライブラリであり、デフォルトのアプリケーションフレームワークを使用できるようにする機能も含まれています。ハンドル管理された多くのWindowsオブジェクトに加え、定義済みウィンドウやコモンコントロール用の クラスも定義されています。

MFCは導入当初、Windowsメッセージ処理(メッセージマップ[9]経由)、例外実行時型識別(RTTI)、シリアル化、動的クラスインスタンス化のためのC++マクロを提供していました。メッセージ処理マクロは、無駄な仮想テーブルの使用を避けることでメモリ消費量を削減すること、そしてVisual C++が提供する様々なツールが言語全体を解析することなくコードを編集・操作するためのより具体的な構造を提供することを目的としていました。メッセージ処理マクロは、 C++が提供する仮想関数メカニズムに取って代わりました。

シリアル化、例外、および RTTI のマクロは、Microsoft C++ でこれらの機能が使用可能になる数年前から存在していました。Windows NT 3.1以降の Windows オペレーティング システム用の32 ビットバージョンの MFC では、言語機能を実装したコンパイラが使用され、カスタマイズされた実装を提供する代わりに、言語機能を単純にラップするようにマクロが更新され、上位互換性が実現されました。

MFC リボン リソース エディターを使用すると、開発者はRibbonX API のようなXMLベースの宣言型マークアップを使用する代わりに、リボンをグラフィカルに設計できます。オプションで、新しいリボン クラス メソッドのセットを呼び出すことによって、リボン コンポーネントを直接プログラムすることもできます。開発者は、都合に合わせてグラフィカルなリボン開発とプログラムによるリボン開発を組み合わせることができます。MFC アプリケーション ウィザードも、アプリケーションがリボンを使用するかドッキング ペインを使用するかを選択するチェック ボックスなど、新しい機能をサポートするようにアップグレードされました。新しい機能は新しいクラスで提供されるため、古いアプリケーションも引き続き実行できます。[6]この更新は、BCGSoft の BCGControlBar Library Professional Edition をベースに構築されています。[10] Microsoft は、リボンのユーザーに追加のライセンス要件を課しています。[11]これらには、Microsoft UI デザイン ガイドラインに準拠するという要件や、Microsoft Officeと競合するアプリケーションでの UI の使用を禁止する反競争条項が含まれます。

MFC は、静的ライブラリをリンクするか、MFC DLL を追加することで使用できます

バージョン

参照

注記

  1. ^ Windows XPを公式にサポートするライブラリの最後のバージョン[34]

参考文献

  1. ^ 「Visual Studio 2019 リリースノート」。Msdn.microsoft.com 。 2019年7月24日閲覧
  2. ^ Visual C++ Express の概要
  3. ^ 「Visual C++ 2008 Feature Pack が出荷されました」。Somasegarのブログ。Microsoft。2008年4月7日。
  4. ^ 「Visual C++ 2008 Feature Pack がリリースされました!」C++ チームブログ。Microsoft。2008年4月7日。
  5. ^ 「Visual C++ 2008 Feature Pack Refresh」。C ++ チームブログ。Microsoft。2008年4月22日。
  6. ^ ab 「新しいMFC機能のクイックツアー」Blogs.msdn.com、2007年11月9日。 2019年9月10日閲覧
  7. ^ 「Visual Studio Express Edition FAQ」。Microsoft.com。2011年6月11日時点のオリジナルよりアーカイブ2012年1月6日閲覧。
  8. ^ 「MicrosoftがInpriseを買収し、紛争を解決」Techweb.com。2007年10月17日時点のオリジナルよりアーカイブ。 2012年1月6日閲覧
  9. ^ ウィリアムズ、ミッキー、デビッド・ベネット。「独自のメッセージマップを作成する」。Inform IT。
  10. ^ 「BCGSoftによるMFCアップデート」Msdn2.microsoft.com、2007年11月9日。 2007年11月16日閲覧
  11. ^ 「Visual C++ 2008 Feature Pack リリース ダウンロード ページ」Microsoft.com . 2008年5月16日閲覧
  12. ^ 「Microsoft C++ コンパイラが20周年を迎えました!」C++ チームブログ、Microsoft、2012年2月3日。
  13. ^ 「MFC 25周年おめでとう!」C++ チームブログ。Microsoft。2017年2月27日。
  14. ^ abcd 「マイクロソフト セキュリティ情報 MS09-035 - 中: Visual Studio アクティブ テンプレート ライブラリの脆弱性により、リモートでコードが実行される可能性がある (969706)」。Microsoft Learn。Microsoft。2009年7月28日。
  15. ^ abcdefg 「マイクロソフト セキュリティ情報 MS11-025 - 重要: Microsoft Foundation Class (MFC) ライブラリの脆弱性により、リモートでコードが実行される可能性がある (2500212)」。Microsoft Learn。Microsoft。2011年4月12日。
  16. ^ 「MS11-025: Visual Studio .NET 2003 SP1 のセキュリティ更新プログラムについて: 2011年4月12日」。Microsoftサポート。Microsoft。2011年4月12日。
  17. ^ 「Microsoft Visual C++ 2005 Service Pack 1 再頒布可能パッケージのセキュリティ更新プログラムについて: 2009年7月28日」。Microsoftサポート。Microsoft。2009年7月28日。
  18. ^ 「MS11-025: Visual C++ 2005 SP1 再頒布可能パッケージのセキュリティ更新プログラムについて: 2011年4月12日」。Microsoftサポート。Microsoft。2011年4月12日。
  19. ^ 「MS11-025: Visual C++ 2005 SP1 再頒布可能パッケージのセキュリティ更新プログラムについて: 2011年6月14日」。Microsoftサポート。Microsoft。2011年6月14日。
  20. ^ 「Visual C++再頒布可能パッケージはどこでダウンロードできますか?」Jags Blog . Microsoft. 2017年9月4日. 2019年6月10日閲覧
  21. ^ 「FIX: .msiファイルを使用してアプリケーションをインストールすると、そのファイルがVisual C++ 2005ランタイムライブラリのマージモジュールとマージされている場合に「HRESULT: 0x80073715」エラーが発生する」Microsoft.com . 2021年1月25日。
  22. ^ vcredist/source_links/README.md > ソースリンクアーカイブ
  23. ^ 「Microsoft Visual C++ 2008 再頒布可能パッケージのセキュリティ更新プログラムの説明: 2009年7月28日」。Microsoftサポート。Microsoft。2009年7月28日。
  24. ^ 「Microsoft Visual C++ 2008 Service Pack 1 再頒布可能パッケージのセキュリティ更新プログラムについて: 2009年7月28日」。Microsoftサポート。Microsoft。2009年7月28日。
  25. ^ 「MS11-025: Visual C++ 2008 SP1 再頒布可能パッケージのセキュリティ更新プログラムについて: 2011年4月12日」。Microsoftサポート。Microsoft。2011年4月12日。
  26. ^ 「MS11-025: Visual C++ 2008 SP1 再頒布可能パッケージのセキュリティ更新プログラムについて: 2011年6月14日」。Microsoftサポート。Microsoft。2011年6月14日。
  27. ^ 「Visual C++ - Visual Studio 2010のC++およびMFCの新機能の探索」Msdn.microsoft.com 。 2012年11月19日閲覧
  28. ^ 「MS11-025: Visual C++ 2010 再頒布可能パッケージのセキュリティ更新プログラムについて: 2011年4月12日」。Microsoftサポート。Microsoft。2011年4月12日。
  29. ^ 「MS11-025: Visual C++ 2010 Service Pack 1 のセキュリティ更新プログラムについて: 2011年8月9日」。Microsoftサポート。Microsoft。2011年8月9日。
  30. ^ 「Visual C++ 2013およびVisual C++再頒布可能パッケージの更新プログラム」。Microsoftサポート。Microsoft 。 2017年1月8日閲覧
  31. ^ 「Visual C++ 2013およびVisual C++再頒布可能パッケージの更新プログラム」。Microsoftサポート。Microsoft 。 2017年1月8日閲覧
  32. ^ 「Visual C++ 2013再頒布可能パッケージの更新プログラム」。Microsoftサポート。Microsoft 。 2019年6月10日閲覧
  33. ^ 「Microsoft Visual Studio 2015 Update 3 の累積的なサービスリリース (KB3165756)」。Microsoft Learn。Microsoft2016年8月28日閲覧
  34. ^ Visual Studio バージョン間の C++ バイナリ互換性

さらに読む

  • サポートされている最新の Visual C++ ダウンロード - Microsoft
  • Visual C++ 再頒布可能パッケージはどこからダウンロードできますか? - Microsoft
  • MSDN MFCリファレンス - Microsoft
  • MFC: Visual Studio 2005以降 - Microsoft
  • 次世代 Visual C++ の内幕 (MFC 9 の主要なアップデートをカバー) - Microsoft