在miniGUI中增加自定义控件
来源:互联网 发布:阿里云服务器费用100万 编辑:程序博客网 时间:2024/06/01 08:44
本文转载于:http://www.minigui.org/cgi-bin/lb5000/topic.cgi?forum=25&topic=1514
本人初学MiniGUI,现将在miniGUI中增加自定义控件的学习心得整理出来。目的是抛砖引玉,共同提高。
以增加一个Chart控件为例(目前我试验的此控件实际是一个复制的static控件).
一、命名规则:
1. 预定义宏
_CTRL_CHART
CTRL_CHART
CONFIG_CTRL_CHART
2. 控件名
Chart
3. 源文件名
chart.c
chart.h
4. 其它
ctrlchart
build_ctrl_chart
二、受影响的文件:
1. 与menuconfig相关的文件
configs/config.in
configs/feature.in
configure.in
acconfig.h
config.h.in (Generated from configure.in by autoheader, but I don't know why this file MUST be handled manually)
2. 与make相关的文件
src/control/Makefile.am
include/control.h
src/gui/ctrlclass.c
3. 增加源文件
src/control/chart.c
src/include/control/chart.h
4. 其它
configs/Configure.help
三、修改方法
1. configs/config.in
~ line 222
+
bool 'Chart' CONFIG_CTRL_CHART
2. configs/feature.in
~ line 150
+
CONFIG_CTRL_CHART=ctrlchart
3. configure.in
~ line 206
+
build_ctrl_chart = "yes"
~ line 653
+
AC_ARG_ENABLE(ctrlchart,
[ --enable-ctrlchartinclude CHART Control <Default=yes>],
build_ctrl_chart=$enableval)
~ line 1419
+
if test "x$build_ctrl_chart" = "xyes"; then
AC_DEFINE(_CTRL_CHART)
fi
4. acconfig.h
~ line 608
+
/* Define if include CHART Control */
#undef _CTRL_CHART
5. config.h.in
~ line 608
+
/* Define if include CHART Control */
#undef _CTRL_CHART
6. src/control/Makefile.am
~ line 5
-
COMMON_SRCS = strlmisc.c /
+
COMMON_SRCS = strlmisc.c chart.c /
7. include/control.h
~ line 187
+
/******* Chart Control ******************************************************/
#ifdef _CTRL_CHART
//... some notations needed
#define CTRL_CHART ("chart")
//... some others needed
#endif /* _CTRL_CHART */
8. src/gui/ctrlclass.c
~ line 48
+
#ifdef _CTRL_CHART
#include "control/chart.h"
#endif
~ line 115
+
#ifdef _CTRL_CHART
if(!RegidterChartControl())
return FALSE;
#endif
~ line 192
+
#ifdef _CTRL_CHART
ChartControlCleanup();
#endif
9. configs/Configure.help
~ 533
+
Chart
CONFIG_CTRL_CHART
Chart Control is used to ...
四、编译
$ cd path_of_source_file
$ make menuconfig
$ make menuconfig (Select 'Chart', I do not know why need do twice to get the right config.h in source root)
$ make
# make install
# modify /usr/local/etc/MiniGUI.cfg if needed
$ compile your_source_file_with_chart_control
(在RH9.0, MiniGUI 1.3.3, qvfb下通过测试)
五、讨论与改进
增加自定义控件至少有三种方法:添加到control,添加到ext,使用时注册。
前面讲述的是第一种,第二种方法与第一种相差不大,只不过需要修改ext/control/initmgext.c而非第一种的src/gui/ctrlclass.c。(注意:此方法没有试验过,仅仅是猜想)。第三种方法需要单独完成Register和Cleanup,如同ctrlclass.c或initmgext.c完成的一样。(此方法没有试验过,有谁知道的话请告诉我)
前面两种方法可以实现与MiniGUI的无缝集成,用户可以通过configure,如make menuconfig裁减,但不利于独立发布。第三种方法使自定义控件可以作为独立部分发布,但风格不太好(需对每个自定义控件"显示地"写Register和Cleanup)。
对于前面描述的第一种方法(也许包括第二种),可以写一个脚本程序完成自动修改功能。在此,请大家评议一下,哪种方法更适合MiniGUI的控件开发?
- 在miniGUI中增加自定义控件
- 创建MiniGUI自定义控件
- 创建MiniGUI自定义控件
- 自定义IP控件添加到MINIGUI源码中
- 自定义IP控件添加到MINIGUI源码中
- MiniGUI 自定义控件教程1
- MiniGUI 自定义控件教程2
- MiniGUI 自定义控件教程3
- MiniGUI 自定义控件教程4
- MiniGUI 自定义控件教程5
- MiniGUI 自定义控件教程6
- MiniGUI 自定义控件教程7
- MiniGUI 自定义控件(一)
- DXUT中增加自定义按钮控件
- minigui自定义控件。IP 时间日期
- 在开发ActiveX控件中增加事件
- 如何在UIToolBar中增加label控件
- 在Extjs中动态增加控件
- SQL2005CLR函数扩展-山寨索引
- 什么是离散型制造
- GNU开发工具简介(一)
- 用Java的循环实现矩阵乘法代码
- DevExpress AspxGridView系列不能在中文目录下正确运行
- 在miniGUI中增加自定义控件
- [双语阅读]研究:越晚生育 全家越长寿
- 字符函数总结
- Java学习方法的一点个人见解-完整版
- [双语阅读]日本扩大文化出口 动漫、时尚唱主角
- 类与类关系的UML图与代码表现
- 胖人对环境危害更大
- 资本支出 capital expenditure(capex)
- 遇事别hoo-ha