Published on

Hello MFC

Authors

会社のプログラムとかは 5〜10 年前くらいに開発が開始されたものが多くて,GUI は MFC で作っているものが主流です.1 から作ることって中々なくて,既存のものをメンテばっかしているので,いつまでたっても得意になれません.

MFC を初めて触った頃は,プログラムがどこから始まっているかさえわからなかったです.MFC を VC から作るといろいろと余計なものが自動生成されてしまいますし,非常にわかりにくいです.ただ余計なものを取り去ると,ウィンドウの作成は下記のようにシンプルに書けます.InitInstance で CMainWindow のインスタンスを作成して表示しているだけです.

// HelloMFC.h
class CMyApp : public CWinApp {
public:
    virtual BOOL InitInstance();
};

class CMainWindow : public CFrameWnd {
public:
    CMainWindow();

protected:
    DECLARE_MESSAGE_MAP()
};
// HelloMFC.cc
#include <afxwin.h>
#include "HelloMFC.h"

CMyApp myApp;

BOOL CMyApp::InitInstance()
{
    m_pMainWnd = new CMainWindow;

    m_pMainWnd->ShowWindow(m_nCmdShow);
    m_pMainWnd->UpdateWindow();
    return TRUE;
}

BEGIN_MESSAGE_MAP(CMainWindow, CFrameWnd)
END_MESSAGE_MAP()

CMainWindow::CMainWindow()
{
    Create(NULL, _T("Hello MFC"));
}

最近は他言語でも Qt のラッパーが作成されているし,Qt ベースの開発に移行したいと思ってます.その方が学習の手間が省けますし,最近 Qt の本ちょっと読んでるんですが,わかりやすい気がします.