SOUI自定义控件(2)

本系列文章基于VS2022+SOUI4,对于SOUI4相对于SOUI3来说主要是添加了导出C接口的能力,对应的代码上也比较多的采用了宏,当然原理上和SOUI3并没有太大差别。

一面来具体实现我们的图表控件类。

一、创建控件类。

下面新建一个控件类。我把它叫 SCharts这个控件基于SWindow。代码如下:

#pragma once
#include <core\SWnd.h>

SNSBEGIN

class SCharts :
    public SWindow
{
    DEF_SOBJECT(SWindow, L"scharts")

public:


protected:

    //属性列表
    SOUI_ATTRS_BEGIN()
    SOUI_ATTRS_END()

    //消息映射列表
    SOUI_MSG_MAP_BEGIN()
    SOUI_MSG_MAP_END()
};

SNSEND

可以看到SNSBEGIN(这个其实就是namespace SOUI我个人一般使用这个命名空间来开发控件,当然你大可不必,这样的好处就是使用统一的SOUI空间在任何时候使用SOUI下的类不需要考虑不同命名空间下的同名类) DEF_SOBJECT SOUI_ATTRS_BEGIN SOUI_ATTRS_END SOUI_MSG_MAP_BEGIN SOUI_MSG_MAP_END SNSEND几个宏,这几个宏都很简单。这里只说一下DEF_SOBJECT宏,这个宏的目的是给类定义一个名字和类型,前面的SWindow说明它是一个控件类,后一个L"scharts"给它定义一个我们在XML里使用的名字。这里便是SOUI能通过XML识别和创建类的关键。这样我们已经得到了一个叫做scharts的控件,当然现在它什么也没有其行为和SWindow是完全一样的。

二、向SOUI注册控件类

为了使SOUI在解析XML时知道怎么解释scharts,我们需要向SOUI注册,这里我在向导生成控件的Regitercustom函数注册控件。代码如下:

//注册用户自定义皮肤和控件
	void Regitercustom()
	{
		SASSERT(m_theApp);
		m_theApp->RegisterWindowClass<SCharts>();
	}

三、在XML里使用控件

通过上面的步骤我们已经成功向SOUI申明了一个控件,现在在XML里已经可正常使用我们定义的控件了。只需要在XML里添加它即可正常使用。

<scharts text="scharts" colorBkgnd="#FF0000" size="-2,-2">
		
	</scharts>

 

到此我们已经完成了一个控件开发的全部主要流程。当然它现在是披着scharts 名字的SWindow

下面是运行效果。

最后驸上项目地址bugHappy/SCharts: 基于SOUI4的图表控件 (github.com)​​​​​​

当然你看到时候它可以已经更完善和支持更多功能。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值