MFC中使用Duilib--2

本文是MFC使用Duilib系列的第二部分,主要介绍如何在MFC应用中加载XML资源文件。在EXE输出目录下创建skin文件夹,存放图片和XML配置文件,例如skin.xml。XML内容包含所需资源图片引用。更新CTestDlg的HandleMessage函数,处理WM_CREATE消息以加载XML,编译运行后实现资源加载。
摘要由CSDN通过智能技术生成

在上一篇文章"MFC中使用Duilib--1"中, 没有用到资源文件,即xml,本篇讲怎样加载文件。

1.  在exe输出目录下,创建一个skin目录,里面放入需要用到的图片文件,以及创建一个或几个xml文件,在这里,我创建一个skin.xml文件。内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<Window mininfo="200,360" size=" 480,320 ">
	<Default name="Button" value="normalimage="file='skin\button_nor.bmp' corner='4,2,4,2' fade='200' hsl='true'" hotimage="file='skin\button_over.bmp' corner='4,2,4,2' fade='200' hsl='true'" pushedimage="file='skin\button_down.bmp' corner='4,2,4,2' fade='200' hsl='true' " " />
		<Font name="幼圆" size="16" default="true" />
		<VerticalLayout bkcolor="#FFFF00FF">
			<Button name="changeskinbtn" height="20" text="测试按钮" maxwidth="120"/>
			<RichEdit name="testrichedit" bordercolor="#FF0000" bordersize="0" borderround="18,18" inset="4,2,4,2" bkcolor="#FFF2F5FA" bkcolor2="#FFA0A000" bkcolor3="#FFF2F5FA" font="1" multiline="true" vscrollbar="true" autovscroll="true" enabled="true" rich="true" readonly="false" text="测试richedit">
			</RichEdit>
			<Edit name="testedit" text="测试编辑框" />
		</VerticalLayout>
</Window>


需要用到的资源图片有button_nor.bmp、button_over.bmp、button_down.bmp。

 

再将上节内容中的CTestDlg的HandleMessage函数中的WM_CREATE消息改成如下内容:

LRESULT CTestDlg::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);
		m_pm.Init(m_hWnd);
		CDialogBuilder builder;
		CControlUI *pRoot = builder.Create(L"skin\\skin.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、付费专栏及课程。

余额充值