教程:http://www.cnblogs.com/Alberl/p/3343699.html
本节重点:
①CDialogBuilder用来用xml创建逻辑Dialog,整个当作一个控件
②原来在代码中SetName设置控件的ID,改为在xml中设置name属性
③必须在实例化CPaintManagerUI之后用CPaintManagerUI::SetResourcePath(CPaintManagerUI::GetInstancePath());设置xml路径。
HandleMessage:
virtual LRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
{
LRESULT lRes = 0;
if( uMsg == WM_CREATE )
{
m_PaintManager.Init(m_hWnd);
CDialogBuilder builder;
CControlUI* pRoot=builder.Create(_T("duilib.xml"),(UINT)0,NULL,&m_PaintManager);
if (pRoot)
{
m_PaintManager.AttachDialog(pRoot);
}
m_PaintManager.AddNotifier(this);
return lRes;
}
else if (uMsg==WM_NCACTIVATE)
{
if (!::IsIconic(m_hWnd))
{
return (wParam==0)?TRUE:FALSE;
}
}
else if (uMsg==WM_NCCALCSIZE)
{
return 0;
}
else if (uMsg==WM_NCPAINT)
{
return 0;
}
if( m_PaintManager.MessageHandler(uMsg, wParam, lParam, lRes) )
{
return lRes;
}
return __super::HandleMessage(uMsg, wParam, lParam);
}
duilib.xml:
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<Window>
<HorizontalLayout width="400" height="400" bkcolor="#FF008080">
<Button name="btn1" text="Button1" />
</HorizontalLayout>
</Window>
_tWinMain:
int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
CPaintManagerUI::SetInstance(hInstance);
CPaintManagerUI::SetResourcePath(CPaintManagerUI::GetInstancePath());
CDuiFrameWnd duiFrame;
duiFrame.Create(NULL, _T("DUIWnd"), UI_WNDSTYLE_FRAME, WS_EX_WINDOWEDGE);
duiFrame.CenterWindow();
duiFrame.ShowModal();
return 0;
}