■MFCアプリケーション骨格
最小限のMFCアプリケーション
// 最小限のMFCプログラム #include <afxwin.h> // メインウィンドウクラス class CMainWin : public CFrameWnd { public: CMainWin(); DECLARE_MESSAGE_MAP() }; // ウィンドウ生成 CMainWin::CMainWin() { Create(NULL, "Title"); } // アプリケーションクラス 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クラスの階層
・CObject ・CCmdTarget ・CWinThread ・CwinApp ・CWnd ・CFrameWnd
■メモ
DECLARE_MESSAGE_MAP() | CMainWinクラスのメッセージマップを宣言 メッセージを処理するウインドはこの関数を含まなければならない クラス内の最後に宣言する必要がある |
||||||||||||
Create(NULL, "Title") | フレームウィンドウの作成 BOOL CFrameWnd::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle = WS_OVERLAPPEDWINDOW, const RECT& rect = rectDefault, CWnd* pParentWnd = NULL, // != NULL for popups LPCTSTR lpszMenuName = NULL, DWORD dwExStyle = 0, CCreateContext* pContext = NULL); 最初の二つのパラメータ以外は指定しないとデフォルトが入る
|
||||||||||||
InitInstance() | 仮想関数 オーバーライドさせている プログラムの新しいインスタンスが起動されるたびに呼び出される 成功:非ゼロ 失敗:0 |
||||||||||||
m_pMainWnd | CWnd* CWinThread::m_pMainWnd |
||||||||||||
ShowWindow | ウィンドウを以前の表示状態に返す ウインドウが表示されていた場合:非ゼロ ない場合:0 BOOL CWnd::ShowWindow(int nCmdShow)
|
||||||||||||
m_nCmdShow | int CWinApp::m_nCmdShow | ||||||||||||
UpdateWindow() | メインウィンドウの更新が必要であるというメッセージをアプリケーションに送るようにWindowsに指示する関数 |