Looking for mfc Answers? Try Ask4KnowledgeBase
Looking for mfc Keywords? Try Ask4Keywords

mfcmfcを使い始める


備考

Microsoft Foundation ClassesMFC )は、Win32 APIにオブジェクト指向のラッパーを提供するライブラリです。 MFCでは、「生の」Win32 APIをC ++クラスにカプセル化することで、GUIアプリケーションの作成とリソースの管理が大幅に簡単になります。

MFCは非常に長い時間が経ちました。 1992年にMicrosoftのC / C ++コンパイラのバージョン7で初めて導入されました。現時点では、C ++の開発が始まりました。 Visual Studioの後続バージョンには、大幅に改善されたバージョンのMFCが付属しています。それはまだVisual Studio 2015の最新バージョンに含まれています。しかし、その遺産の根は残念ながらかなり目立ちます。そのほとんどはC ++言語の標準化以前に開発されたものなので、MFCクラスはテンプレートなどの最新のC ++機能をフルに活用したり、RTTIなどの標準的なC ++機能を独自に実装したり、 。これらの事実は、Microsoft以外のコンパイラを使用してMFCアプリケーションをコンパイルすることをほぼ不可能にします。しかし、MFCはVisual Studioに完全に統合されているため、開発が大幅に容易になります。

初期の開発段階では、ライブラリはApplication Framework Extensions(AFXと略されています)として知られていました。マーケティング部門は後でその名前をMFCに変更しましたが、コードを変更するには遅すぎました。そのため、コードの多くは「Mfc」ではなく「Afx」を参照しています。目立つ例は、Visual Studioによって自動的に生成される標準のプリコンパイル済みヘッダーファイルです。このファイルはStdAfx.hという名前StdAfx.h

2008年4月7日、MicrosoftはVisual Studio 2008とMFC 9のアウトオブバンドアップデートとしてMFCクラスのアップデートをリリースしました。このアップデートにはリボン(Microsoft Office 2007のものに似ています)完全にカスタマイズ可能なツールバー、(Visual Studio 2005のような)ドッキング・ペインを自由に浮かべたり、サイドタブやドキュメント・タブにドッキングすることができます。新しい機能が新しいクラスで提供されるため、古いアプリケーションは引き続き実行されます。このアップデートは、 BCGSoftの BCGControlBar Library Professional Edition 上に構築され、 MFC Feature Packとして命名されました。

だから今MFCは異なるアプローチの2つのライブラリから構成されています:

  • クラシックMFC(Win32 APIのラッパー)。
  • MFC Feature Pack(Win32 APIコントロールとリボンのような新しい自己描画コントロールの混合セット)。

参照:

基本的なMFCプログラム

// Include the MFC header:
// (you do not need to and should not include the standard Windows headers, e.g. 
// Windows.h)
#include <AfxWin.h>               // MFC core and standard components
// The following header defines resource constants, such as dialog and control IDs:
#include "resource.h"

// The basic element of an MFC application is a class that inherits from CWinApp.
class CMyApp : public CWinApp
{
    // This gets called as the application gets initialized.
    virtual BOOL InitInstance()
    {
        // Initialize a CDialog object to show in a moment.
        CDialog dlg(IDD_DIALOG1);
        // Display the dialog box as a modal dialog box.
        dlg.DoModal();

        // Return FALSE from this method to exit the application.
        return FALSE;
    }
};

// The one and only application object.
CMyWinApp theApp;
 

概要:

IDD_DIALOG1は、Visual Studioに組み込まれているリソースエディタなどのリソースエディタで作成されたプロジェクトリソースファイルで定義されているダイアログボックスのIDです。 (リソースファイルの拡張子は.rcです)ダイアログの動作をカスタマイズするには、CDialogから新しいクラスを派生させることができます。

モーダルダイアログボックスは、独自のメッセージループを実行します。呼び出し "dlg.DoModal();"ダイアログがユーザーによって閉じられるまで戻りません。

InitInstance()からTRUEを返すと、アプリケーションのメッセージループが開始されます。これは、より複雑で非ダイアログベースのアプリを使用している場合に使用されます。