Duilib是一款基于XML的开源DirectUi界面库。在MFC中使用Duilib可以使c++界面更具有扩展性。



源代码  http://download.csdn.net/detail/witch_soya/4881669



在MFC中嵌套使用Duilib



在MFC对话框中产生一个自定义的Duilib窗口类 CDuiLib_Dialog m_dlgDuilib;



在CDuiLib_Dialog中处理以下消息

  1. void CDuiLib_Dialog::Notify(TNotifyUI& msg)    
  2. {    
  3.     if( msg.sType == _T("click") )   
  4.     {    
  5.         if( msg.pSender->GetName() == _T("closebtn") )   
  6.         {    
  7.             Close();    
  8.         }    
  9.     }    
  10. }    
  11.   
  12. LRESULT CDuiLib_Dialog::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)    
  13. {    
  14.     if( uMsg == WM_CREATE )   
  15.     {    
  16.         /* 
  17.         m_pm.Init(m_hWnd);   
  18.         CControlUI *pButton = new CButtonUI;   
  19.         pButton->SetName(_T("closebtn"));   
  20.         pButton->SetBkColor(0xFFFF0000);   
  21.         m_pm.AttachDialog(pButton);   
  22.         m_pm.AddNotifier(this); */   
  23.   
  24.         CPaintManagerUI::SetInstance(AfxGetInstanceHandle());  
  25.         CPaintManagerUI::SetResourcePath(CPaintManagerUI::GetInstancePath() + _T("skin"));  
  26.   
  27.         m_pm.Init(m_hWnd);    
  28.         CDialogBuilder builder;    
  29.         CControlUI *pRoot = builder.Create("MainActivity.xml", (UINT)0, NULL, &m_pm);    
  30.         ASSERT(pRoot && "Failed to parse XML");    
  31.         m_pm.AttachDialog(pRoot);    
  32.         m_pm.AddNotifier(this);    
  33.   
  34.         return 0;    
  35.     }    
  36.     else if( uMsg == WM_DESTROY )   
  37.     {    
  38.         ::PostQuitMessage(0);    
  39.     }    
  40.     LRESULT lRes = 0;    
  41.     if( m_pm.MessageHandler(uMsg, wParam, lParam, lRes) ) return lRes;    
  42.     return CWindowWnd::HandleMessage(uMsg, wParam, lParam);    
  43.   
  44. }    



Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐