好人做到底,送佛送到西。雖然上一篇教程已經說得很詳細了,但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~
代碼下載:http://download.csdn.net/detail/qq316293804/6428255