MFCではDuilib-1を使用します。


ネットでDuilib入門教程を見つけました。最初にあげた時はSDKの例に基づいて、ここで自分でMFCを書きました。入門教程の例と同じです。
新しいウィンドウクラス(CTestDlg)
TestDlg.hの内容は以下の通りである。
#pragma once
class CTestDlg:public CWindowWnd, INotifyUI
{
public:
	CTestDlg(void);
	~CTestDlg(void);
	
public:
	LPCTSTR GetWindowClassName() const;
	UINT GetClassStyle() const;
	void OnFinalMessage(HWND hWnd);
	void Notify(TNotifyUI& msg);
	LRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam);
private:
	CPaintManagerUI m_pm;
};

TestDlg.cppの内容は以下の通りです。
#include "StdAfx.h"
#include "TestDlg.h"


CTestDlg::CTestDlg(void)
{
}

CTestDlg::~CTestDlg(void)
{
}

LPCTSTR CTestDlg::GetWindowClassName() const
{
	return L"CTestDlg";
}

UINT CTestDlg::GetClassStyle() const
{
	return UI_CLASSSTYLE_FRAME | CS_DBLCLKS;
}

void CTestDlg::OnFinalMessage(HWND hWnd)
{
}

void CTestDlg::Notify(TNotifyUI& msg)
{
	if( msg.sType == _T("click") ) {
		if( msg.pSender->GetName() == _T("closebtn") ) {
			Close();
		}
	}
}

LRESULT CTestDlg::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	if( uMsg == WM_CREATE ) {
		m_pm.Init(m_hWnd);
		CControlUI *pButton = new CButtonUI;
		pButton->SetName(_T("closebtn"));
		pButton->SetBkColor(0xFFFF0000);
		m_pm.AttachDialog(pButton);
		m_pm.AddNotifier(this);
		return 0;
	}
	else if( uMsg == WM_DESTROY ) {
		::PostQuitMessage(0);
	}
	LRESULT lRes = 0;
	if( m_pm.MessageHandler(uMsg, wParam, lParam, lRes) ) return lRes;
	return CWindowWnd::HandleMessage(uMsg, wParam, lParam);

}
次に、メインダイアログのクラスにメンバー変数を追加します。
CTestDlg m_testDlg;
OnInitDialog関数には、次の2行のコードが追加されます。
	m_testDlg.Create(*this, NULL, UI_WNDSTYLE_CHILD, 0, 0, 0, 642, 520);
	m_testDlg.ShowWindow(TRUE);
コンパイルで実行できます。