SOUI自定义控件(2)
本系列文章基于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)相关推荐
- SOUI自定义控件(1)
本文内容旨在完成一个供了常规的折线图.柱状图.散点图.饼图.K线图,用于统计的盒形图,用于地理数据可视化的地图.热力图.线图,用于关系数据可视化的关系图.treemap.旭日图,多维数据可视化的平行坐 ...
- 开发Eclipse自定义控件
摘自:http://www.ibm.com/developerworks/cn/opensource/os-eclipcntl/ 我们在开发自定义控件时主要考虑以下问题: 1. 自定义控件的绘制:通常 ...
- qt获取当前系统音量值_Qt编写自定义控件50-迷你仪表盘
一.前言 这个控件取名叫迷你仪表盘,是以为该控件可以缩小到很小很小的区域显示,非常适合小面积区域展示仪表数据使用,还可以手动触摸调节进度,是我个人觉得最漂亮小巧的一个控件.初次看到类似的控件是在一个音 ...
- 【iOS】自定义控件入门:可拖动的环形进度
有时候UIKit的标准控件并不能满足我们的需求,因此我们可以通过自定义控件得到满足我们需求的控件,例如这篇文章将教你如何自定义一个圆形的进度条,并且用户可以通过拖动进度条上的手柄来改变进度值.主要参考 ...
- Android自定义控件系列之基础篇
一.概述 在android开发中很多UI控件往往需要进行定制以满足应用的需要或达到更加的效果,接下来就通过一个系列来介绍自定义控件,这里更多是通过一些案例逐步去学习,本系列有一些典型的应用,掌握好了大 ...
- C#自定义控件四简易时钟
C#自定义控件四简易时钟 效果图: 简易时钟,顾名思义,简单容易,简单到什么程度呢?界面只有数字和指针,甚至连与当前时间都不能匹配!呵呵!就这么简单,学习嘛,从简单开始. 毫无疑问,这里肯定要用到Ti ...
- 对做C#自定义控件的一点心得
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装这个COM组件,中间遇到很多曲折,研究了一个星期,终于完成了 下面总结一下我做DSOFramer这个自定义控件的注意地方: 1.在创建 ...
- ASP.NET自定义控件组件开发 第四章 组合控件开发CompositeControl
第四章 组合控件开发CompositeControl 大家好,今天我们来实现一个自定义的控件,之前我们已经知道了,要开发自定义的控件一般继承三个基 类:Control,WebControl,还有一个就 ...
- Android自定义控件NumberCircleProgressBar(圆形进度条)的实现
Android自定义控件NumberCircleProgressBar(圆形进度条)的实现
最新文章
- harris角点检测_角点检测(2) - harris算子 - 理论与Python代码
- key可以重复的map集合:IdentityHashMap
- python chm制作_生成chm文档的方法
- C语音的预处理,编译,汇编,链接过程分析
- 阿里云服务器ssh连接经常断开
- Android官方开发文档Training系列课程中文版:后台加载数据之处理CursorLoader的查询结果
- python征程1.4(初识python)
- 简单十步让你全面理解SQL
- centos 安装mysql5.7.19_centos7源码安装mysql5.7.19
- 液晶显示器尺寸对照表_安徽CHARACTER液晶显示屏
- 大B公司自己做AI,都是九死一生——To B AI 平台的1.0 模式,已几乎宣告失败?...
- 手机入侵修改服务器数据,手机怎么入侵服务器修改数据库
- MySQL学习笔记(3)查询数据1
- 计算机内存错误 要降频,电脑出现内存自动降频的问题该怎么办?
- 10首现代诗歌欣赏:什么是孤独
- 测试硬盘软件hd不能结束进程,终于解决了HD TUNE以及所有其他硬盘检测工具都不能使用的情况。。...
- 找对英语学习方法的第一本书之:标准发音
- system/bt目录内容解析
- 简单逆向分析使用案例(2)--CrackMe_01.exe 找出密码
- php style EOT EOD