MFC入門1 最小限のMFCアプリ

MFCの勉強をしつつ入門記事を書いていこうと思います。

今回は最小化、最大化、閉じるぐらいしか出来ない、最小限のアプリです。

MFCでは
CFrameWndをそれぞれ継承したウィンドウ classと
CWinAppを継承したアプリケーションclass の
2つのクラスが必要になります。

CFrameWndの派生クラスなどのメッセージに応答するクラスの
宣言ではDECLARE_MESSAGE_MAP()マクロが、
定義(cppファイル)ではBEGIN_MESSAGE_MAP(theClass, baseClass)マクロと
END_MESSAGE_MAP()マクロが必要です。

DECLARE_MESSAGE_MAP()マクロは、内部で
アクセス指定子をprotectedに変更するので注意が必要です。

CWindowで呼び出されているCreate()関数でウィンドウの作成
CAppのInitInstance()で呼び出されているShowWindow()でウィンドウの表示を行なっています。

 // ----- CApp.h ----- 
#pragma once

#include <afxwin.h>

class CApp:public CWinApp
{
public:
	CApp(void);
	~CApp(void);

	BOOL InitInstance();
};

// ----- CWindow.h -----
class CWindow:public CFrameWnd
{
public:
	CWindow(void);
	~CWindow(void);

	DECLARE_MESSAGE_MAP()
};

// ----- CWindow.cpp -----
#include "CWindow.h"
#include "CApp.h"

CApp::CApp(void)
{
	TRACE("CApp::CApp()\n");
}

BOOL CApp::InitInstance()
{
	TRACE("CApp::InitInstance()\n");

	m_pMainWnd = new CWindow;
	m_pMainWnd->ShowWindow(m_nCmdShow);
	m_pMainWnd->UpdateWindow();
	return true;
}

CApp::~CApp(void)
{
	TRACE("CApp::~CApp()\n");
}

CApp App; //アプリケーションのインスタンスを生成

// ----- CWindow.cpp -----
#include "CWindow.h"

CWindow::CWindow(void)
{	
	TRACE("CWindow::CWindow()\n");
	Create(NULL, L"Skelton");
}

CWindow::~CWindow(void)
{
	TRACE("CWindow::~CWindow()\n");
}

BEGIN_MESSAGE_MAP(CWindow,CFrameWnd)
END_MESSAGE_MAP()

// ---------
広告

akatukisiden について

フリーランスプログラマ 使用言語はC++,C#とそのつなぎのC++/CLI 専門はクライアントアプリ開発
カテゴリー: C++, MFC タグ: , , , , パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中