MFC中使用Duilib DuiLib_Mfc


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



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



在MFC中嵌套使用Duilib



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



在CDuiLib_Dialog中处理以下消息

void CDuiLib_Dialog::Notify(TNotifyUI& msg)  
{  
	if( msg.sType == _T("click") ) 
	{  
		if( msg.pSender->GetName() == _T("closebtn") ) 
		{  
			Close();  
		}  
	}  
}  

LRESULT CDuiLib_Dialog::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); */ 

		CPaintManagerUI::SetInstance(AfxGetInstanceHandle());
		CPaintManagerUI::SetResourcePath(CPaintManagerUI::GetInstancePath() + _T("skin"));

		m_pm.Init(m_hWnd);  
		CDialogBuilder builder;  
		CControlUI *pRoot = builder.Create("MainActivity.xml", (UINT)0, NULL, &m_pm);  
		ASSERT(pRoot && "Failed to parse XML");  
		m_pm.AttachDialog(pRoot);  
		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);  

}  






评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值