博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
新增图表控件
阅读量:7085 次
发布时间:2019-06-28

本文共 1382 字,大约阅读时间需要 4 分钟。

前言

好久没有来更新博客了,这次就写一下在实际工作过程中,利用Htmlayout引擎开发自定义图表控件的东西吧。

Htmlayout是一个非常棒非常轻量级的HTML引擎,利用HTML+CSS的搭配完成了静态页面布局的元素。可以通过访问来获取最新的版本信息。
Htmlayout提供的标准控件库没有能够满足我需求的图表显示控件,需要自己实现这方面的控件开发工作,于是就有了本文内容。

前期准备

各位看官可以从去下载最新版本的SDK,然后集成到开发环境中,我这里采用的是Microsoft visual studio 2008。

1.新增控件类型
我在这里不打算使用Htmlayout里面提供的绘图函数,所以直接从htmlayout::event_handler中继承了,这里也可以从htmlayout::canvas中继承。
2.定义响应事件类型
在构造函数中定义需要响应的时间,我这里偷懒了,直接处理了event_handler(HANDLE_ALL)
3.响应绘制函数
一想到绘制函数,大家应该首先想到的是WM_PAINT、HDC之类的东西吧。没错,Htmlayout里面也是一样的,大家可以重载htmlayout::event_handler::on_draw()函数,剩下的就跟一般的窗口绘制函数一样了。
函数原型

virtual BOOL on_draw(HELEMENT he, UINT draw_type, HDC hdc, const RECT& rc);

如果想让系统继续处理,则直接返回FALSE即可。

4.实现创建工厂类对象
在Htmlayout中,其实每一个控件都是一个behavior,这里的自定义控件也不例外。如果直接定义一个behavior的话就需要一个全局函数,这与图表控件的使用明显不合,为了更好的控制每一个图表的控件对象生命周期,需要一个创建工厂实例来控制每一个图表创建的时机。
说了那么多,其实做起来没那么复杂,也就几句代码

chart_control_factory::chart_control_factory():behavior(HANDLE_BEHAVIOR_EVENT, "chart_control"){}event_handler* chart_control_factory::attach(HELEMENT h){    return dynamic_cast
(new chart_figure);}chart_control_factory chart_control_factory_instance;

其中 "chart_control"指明了使用本图表控件的behavior名称。Htmlayout在解析到behavior的时候会遍历当前所有有效的behavior对象,找到对应的工厂类型后创建出合适的behavior实例。

其他

在本文中,我只是写了behavior里面的一个绘制处理修改,实际上除了绘制还有很多事件可以在behavior中处理,具体的内容可以参考EVENT_GROUPS里面的定义,每一个类型都会对应一个重载函数,可以非常灵活的定制自己的扩展控件库。

转载于:https://www.cnblogs.com/sanghg/p/4143873.html

你可能感兴趣的文章
java8新特性介绍(一)
查看>>
查看Linux服务器有没有无线网卡
查看>>
2015年10月23日作业
查看>>
Python---列表生成式
查看>>
学生信息管理系统改编
查看>>
量化标配:工作站个人版裸机配置
查看>>
『中级篇』手动建立一个base Image(14)
查看>>
BIOS和CMOS
查看>>
程序员眼中的高并发(下)
查看>>
grep、egrep及相应的正则表达式和用法
查看>>
Android7.0新特性
查看>>
linux系统管理pv-vg-lv
查看>>
Python中的列表
查看>>
linux中日志的管理
查看>>
在linux下查看内核版本、gcc版本、操作系统多少位等参数
查看>>
鹅厂奋战历程简录
查看>>
从零开始成为一名开源程序员,其实只需要九步!
查看>>
1周2次课
查看>>
OSI模型和TCP/IP协议栈
查看>>
基于centos6.x环境下GRE隧道的搭建及分析
查看>>