Duilib 创建自定义控件

本文介绍了在Duilib中创建自定义控件的步骤,包括继承现有控件类、实现消息处理和绘制功能。重点讲解了DoEvent、DoPaint、SetAttribute和DoInit等关键函数的作用,以及如何通过XML配置文件使用自定义控件。
摘要由CSDN通过智能技术生成
  用Duilib开发界面时,很多情况下库自带的控件不满足需求,就需要基于Duilib建立自定义控件(自绘新的控件,或者用来封装win32的子窗体,来显示视频、网页等)。  
   在群里经常会有刚接触Duilib的朋友问题怎么建立自己的自定义控件,或者建立的控件无法正常创建出来。我简单写一篇博客,把创建自定义控件的完整过程,和一些注意事项说明一下。另外说一下如果把win32的子窗体封装为控件,希望能有帮助。  

   创建自定义控件包含两个过程:1、继承现有的控件类创建新的控件类2、让程序识别新的控件并可以在xml中使用 

class ComputerExamineUI : public CContainerUI //1.创建一定要的控件
{
public:
	ComputerExamineUI()
	{
		CDialogBuilder builder;//2.自定义控件绑定xml文件
		CContainerUI* pComputerExamine = static_cast<CContainerUI*>(builder.Create(_T("ComputerExamine.xml"), (UINT)0));
		if( pComputerExamine ) {//3.添加xml绘制控件到自定义控件
			this->Add(pComputerExamine);
		}
		else {
			this->RemoveAll();
			return;
		}
	}
};
class CDialogBuilderCallbackEx : public IDialogBuilderCallback
{//4.让程序识别出自定义控件
public:
	CControlUI* CreateControl(LPCTSTR pstrClass) 
	{
		if( _tcscmp(pstrClass, _T("ComputerExamine")) == 0 ) 
			return new ComputerExamineUI;
		return NULL;
	}
};
   新的控件名为CSkinPickerPictureItemUI。一般来说,建立新控件后,最先应该重写的两个函数是GetClass和GetInterface。他们后用来区分控件的类型的虚函数,用于动态识别控件类型和做控件的类型转换。  
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值