好人做到底,送佛送到西。虽然上一篇教程已经说得很详细了,但Alberl还是再举一个例子。上一篇教程的主窗口是MFC的,所以这篇教程把主窗口换成duilib的~O(∩_∩)O~
1、我们利用《2013 duilib入门简明教程 -- 完整的自绘标题栏(8)》里的XML做为主窗口,并且把客户区的控件都去掉,换成一个自定义控件<Dialog />
2、在CDuiFrameWnd::CreateControl()函数里,加入自定义控件Dialog的创建:
if (_tcsicmp(pstrClassName, _T("Dialog")) == 0)
{
CWndUI *pUI = new CWndUI;
CXMPDlg *pDlg = new CXMPDlg; // 这里只是示例,请自行释放内存~
pDlg->Create(IDD_XMP_DIALOG);
pUI->Attach(pDlg->GetSafeHwnd());
return pUI;
}
3、在CXMPApp::InitInstance()函数里,将
CXMPDlg dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
换成
CDuiFrameWnd *pFrame = new CDuiFrameWnd(_T("XMP_MAIN.xml"));
pFrame->Create(NULL, _T("DUIWnd"), UI_WNDSTYLE_FRAME, WS_EX_WINDOWEDGE);
pFrame->CenterWindow();
m_pMainWnd = CWnd::FromHandle(*pFrame);
INT_PTR nResponse = pFrame->ShowModal();
4、将MFC对话框的风格改为子窗口模式,如下:
然后运行,即可看到以下效果:
同样,里面的控件都是可以响应的哦,那么到现在为止,MFC和duilib结合的所有方式都讲完了,那些为老项目界面犯愁的小伙伴们,赶紧动手试试吧~O(∩_∩)O~