MFCではDuilib-1を使用します。
ネットでDuilib入門教程を見つけました。最初にあげた時はSDKの例に基づいて、ここで自分でMFCを書きました。入門教程の例と同じです。
新しいウィンドウクラス(CTestDlg)
TestDlg.hの内容は以下の通りである。
新しいウィンドウクラス(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);
コンパイルで実行できます。