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

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

一、创建控件类。

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

#pragma once
#include <core\SWnd.h>SNSBEGINclass 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)​​​​​​

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

SOUI自定义控件(2)相关推荐

  1. SOUI自定义控件(1)

    本文内容旨在完成一个供了常规的折线图.柱状图.散点图.饼图.K线图,用于统计的盒形图,用于地理数据可视化的地图.热力图.线图,用于关系数据可视化的关系图.treemap.旭日图,多维数据可视化的平行坐 ...

  2. 开发Eclipse自定义控件

    摘自:http://www.ibm.com/developerworks/cn/opensource/os-eclipcntl/ 我们在开发自定义控件时主要考虑以下问题: 1. 自定义控件的绘制:通常 ...

  3. qt获取当前系统音量值_Qt编写自定义控件50-迷你仪表盘

    一.前言 这个控件取名叫迷你仪表盘,是以为该控件可以缩小到很小很小的区域显示,非常适合小面积区域展示仪表数据使用,还可以手动触摸调节进度,是我个人觉得最漂亮小巧的一个控件.初次看到类似的控件是在一个音 ...

  4. 【iOS】自定义控件入门:可拖动的环形进度

    有时候UIKit的标准控件并不能满足我们的需求,因此我们可以通过自定义控件得到满足我们需求的控件,例如这篇文章将教你如何自定义一个圆形的进度条,并且用户可以通过拖动进度条上的手柄来改变进度值.主要参考 ...

  5. Android自定义控件系列之基础篇

    一.概述 在android开发中很多UI控件往往需要进行定制以满足应用的需要或达到更加的效果,接下来就通过一个系列来介绍自定义控件,这里更多是通过一些案例逐步去学习,本系列有一些典型的应用,掌握好了大 ...

  6. C#自定义控件四简易时钟

    C#自定义控件四简易时钟 效果图: 简易时钟,顾名思义,简单容易,简单到什么程度呢?界面只有数字和指针,甚至连与当前时间都不能匹配!呵呵!就这么简单,学习嘛,从简单开始. 毫无疑问,这里肯定要用到Ti ...

  7. 对做C#自定义控件的一点心得

    近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装这个COM组件,中间遇到很多曲折,研究了一个星期,终于完成了 下面总结一下我做DSOFramer这个自定义控件的注意地方: 1.在创建 ...

  8. ASP.NET自定义控件组件开发 第四章 组合控件开发CompositeControl

    第四章 组合控件开发CompositeControl 大家好,今天我们来实现一个自定义的控件,之前我们已经知道了,要开发自定义的控件一般继承三个基 类:Control,WebControl,还有一个就 ...

  9. Android自定义控件NumberCircleProgressBar(圆形进度条)的实现

    Android自定义控件NumberCircleProgressBar(圆形进度条)的实现

最新文章

  1. harris角点检测_角点检测(2) - harris算子 - 理论与Python代码
  2. key可以重复的map集合:IdentityHashMap
  3. python chm制作_生成chm文档的方法
  4. C语音的预处理,编译,汇编,链接过程分析
  5. 阿里云服务器ssh连接经常断开
  6. Android官方开发文档Training系列课程中文版:后台加载数据之处理CursorLoader的查询结果
  7. python征程1.4(初识python)
  8. 简单十步让你全面理解SQL
  9. centos 安装mysql5.7.19_centos7源码安装mysql5.7.19
  10. 液晶显示器尺寸对照表_安徽CHARACTER液晶显示屏
  11. 大B公司自己做AI,都是九死一生——To B AI 平台的1.0 模式,已几乎宣告失败?...
  12. 手机入侵修改服务器数据,手机怎么入侵服务器修改数据库
  13. MySQL学习笔记(3)查询数据1
  14. 计算机内存错误 要降频,电脑出现内存自动降频的问题该怎么办?
  15. 10首现代诗歌欣赏:什么是孤独
  16. 测试硬盘软件hd不能结束进程,终于解决了HD TUNE以及所有其他硬盘检测工具都不能使用的情况。。...
  17. 找对英语学习方法的第一本书之:标准发音
  18. system/bt目录内容解析
  19. 简单逆向分析使用案例(2)--CrackMe_01.exe 找出密码
  20. php style EOT EOD

热门文章

  1. 2008年DIY配台电脑
  2. python itertools_Python之itertools库
  3. 大数据综合实例—陌陌聊天数据分析
  4. 教育机构最需要的教育直播系统
  5. CSS:实现background-image背景图片全屏铺满自适应
  6. JS小技巧——随机数的生成
  7. Android7.1开机声音
  8. 宝塔搭建网站出现 no input file specified 错误解决办法
  9. 数据库索引:主键索引
  10. neo4j 数组属性(属性值有多个)