minigui控件管理之注册控件类

 minigui控件管理这几篇文章重点在于说明控件类数据结构和控件数据结构的管理,并找出控件类与控件在代码上的联系与区别。

 

1、 系统注册

 

Minigui在初始化期间,会有一个控件类初始化,该函数在src/gui/ctrlclass.c

 

在这里根据配置,注册了一系列的控件。在此我们看一下关于编辑框的注册。如果定义了_CTRL_SLEDIT这个宏,就去会调用RegisterSLEditControl这个函数。该函数位于src/control/edit.c

 

  

在注册编辑框的开始,首先会初始化一个WNDCLASS类型的窗口类,它的定义在include/window.h

 

 

这里对这个类做了简单的初始化,比如类名、回调函数等。这是所有编辑框共同具有的特征属性。这些初始化好之后,就调用AddNewControlClass来添加一个控件类。该函数位于src/gui/ctrlclass.c

 

 

 

从这段代码可以看出,这里主要是向一个全局的hash表ccitable[]中添加一个控件类信息结构类型的指针PCTRLCLASSINFO,该结构定义在src/include/ctrlclass.h

 

 

 

这样,就完成了编辑框控件类的注册,以后创建编辑框控件时,会到这个数组中寻找该控件类的相关信息。

 

2、自定义控件类

 

如果我们觉得系统的控件类并不能满足我们的要求,还可以自定义控件类,并注册到系统中。首先我们可以初始化一个WNDCLASS类型的窗口类,给这个类初始化的类名要有别于现有类的类名,然后通过RegisterWindowClass这个函数,注册我们自定义的控件类。看一下这个函数src/gui/window.c

 

他向桌面线程发送一个消息MSG_REGISTERWNDCLASS,并将我们自己定义的控件类放在lParam参数中。这个消息的处理在src/kernel/desktop-comm.c

 

 

可以看到,它依然是通过AddNewControlClass这个函数来向系统注册控件类。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值