Duilib XML配置界面

前端之家收集整理的这篇文章主要介绍了Duilib XML配置界面前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
#pragma once
/************************
*Duiib XML配置界面
*Author:邱于涵
*2016年12月18日23:43:35
*********************/
#include<Windows.h>
//Duilb的头文件
#include<UIlib.h>
//Duilib的命名空间
using namespace DuiLib;
//|根据宏判断语句 判断是否Unicode 以及相应的动态链接库
#ifdef _DEBUG
#   ifdef _UNICODE
#	pragma comment(lib,"DuiLib_ud.lib")
#	else
#	pragma comment(lib,"DuiLib_d.lib")
#   endif
#else
# ifdef _UNICODE
#	pragma comment(lib,"DuiLib_u.lib")
#	else
#	pragma comment(lib,"DuiLib.lib")
#	endif
#endif
// CDuiWnd 继承于 CWindowWnd 主要实现两个虚函数  GetWindowClassName
//和 HandleMessage(相应消息)
//如果需要相应控件的消息还需要继承INotifyUI实现虚函数Notify
//每个CWindowWnd必须包含CPaintMessageUI界面管理器
class CDuiFrameWnd :public CWindowWnd,public INotifyUI
{
protected:
	CPaintManagerUI m_PaintManager;
public:
	//WindowClassName
	virtual LPCTSTR GetWindowClassName()const{ return _T("DUIWND"); }
	//响应控件消息
	virtual void Notify(TNotifyUI & msg)
	{
		//消息类型为点击
		if (msg.sType == _T("click"))
		{
			//这里的 GetName是唯一的,相当于MFC里面的ID
			if (msg.pSender->GetName() == _T("btnHello"))
			{
				MessageBox(NULL,_T("提示"),_T("你点击了"),NULL);

			}
		}
	}
	//响应窗口消息
	virtual LRESULT HandleMessage(UINT uMsg,WPARAM wParam,LPARAM lParam)
	{
		//返回值
		LRESULT lRes = 0;
		//WM_CREATE消息
		if (uMsg == WM_CREATE)
		{
			//把自己的窗口句柄 与窗口绘制管理器挂钩
			m_PaintManager.Init(m_hWnd);
			//设置关联的xml文件
			CDialogBuilder builder;
			CControlUI * pRoot = builder.Create(_T("UISkin1.xml"),(UINT)0,NULL,&m_PaintManager);
			//把这个控件绘制到窗口上
			m_PaintManager.AttachDialog(pRoot);
			//// 把自己加入到CPaintManagerUI的m_aNotifiers数组中,用于处理Notify函数
			m_PaintManager.AddNotifier(this);
			return lRes;//返回
		}
		//如果此消息没有处理 就交给 绘制管理器 进行默认处理(Notify函数将在这里被绘制管理器调用)
		if (m_PaintManager.MessageHandler(uMsg,wParam,lParam,lRes))
		{
			return lRes;
		}
		//如果还没处理就交给 CWindowWnd处理()
		return __super::HandleMessage(uMsg,lParam);

	}
};
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE preInstance,LPSTR lpCmdLin,int nCmdShow)
{
	//将程序实例 与 皮肤绘制管理器挂钩
	CPaintManagerUI::SetInstance(hInstance);
	//这里设置 资源的路径(也就是xml皮肤文件在哪里~~(在实例的相同目录下))
	CPaintManagerUI::SetResourcePath(CPaintManagerUI::GetInstancePath());
	CDuiFrameWnd duiFrame;
	//Create创建窗口(发送WM_CREATE消息)
	duiFrame.Create(NULL,_T("涵涵的Duilib按钮实例"),WS_OVERLAPPEDWINDOW,WS_EX_WINDOWEDGE);
	//显示
	duiFrame.ShowModal();
	return 0;

}

UISkins1.xml(这个可用DUIDesigner生成)

<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<Window>
    <VerticalLayout enabled="true" width="400" height="400" bkimage="QQ截图20161217235251.png" bkcolor="#FF00FFFF">
        <Progress float="true" pos="251,143,0" enabled="true" width="60" height="30" bkcolor="#FFFF00FF" bkcolor2="#00008080" textcolor="#FF000000" disabledtextcolor="#FFA7A6AA" align="center" min="0" max="100" value="0" hor="true" />
        <Slider float="true" pos="246,242,0" enabled="true" width="60" height="30" bkcolor="#FF008000" bkcolor2="#00008080" textcolor="#FF000000" disabledtextcolor="#FFA7A6AA" align="center" min="0" max="100" value="50" hor="true" thumbimage="QQ截图20161217235137.png" thumbsize="10,10" />
        <Button name="btnHello" float="true" pos="81,116,0" enabled="true" width="60" height="30" bkcolor="#FF00FFFF" textcolor="#FF000000" disabledtextcolor="#FFA7A6AA" align="center" />
    </VerticalLayout>
</Window>

文件


运行截图

猜你在找的XML相关文章