初用控件

 

control可以象窗口一样嵌套,一个compound control应该重载两个函数:CountComponentControlsComponentControlCompound control也需要处理按键事件的分派问题。

 

CONE中维护着一个控件堆栈,用来管理the channeling for the application,控件堆栈包括了那些需要按键事件的控件的列表。事件会根据他们在堆栈中的位置传递到他们那。

 

 

创建简单控件

1.创建一个派生于CCoeControl的类

2.实现构造代码(通常在ContructL()函数中)

3.重写虚函数Draw(),为控件提供绘制代码

4.重写虚函数SizeChanged(),在控件尺寸更改时重新布置它

 

每个控件都应该拥有一个ContructL()方法以执行其二段构造函数。对于大多数控件来说,该方法至少将执行下列步骤:

1.设置控件窗口窗口。这既可以是新窗口(这种情况下控件成为拥有窗口的控件),也可以是已经存在的窗口(这种情况下控件不拥有窗口)

2.设置控件的工作区矩形,即此控件负责绘制的屏幕区域。

3.激活控件。这将通知UI框架已准备绘制该控件。

 

创建复合控件

复合控件的实现同简单控件相同,此外还需要完成以下工作

1.为该控件添加组件控件,通常把组件控件作为复合控件类的成员数据

2.重写虚函数CountComponentControls()ComponentControl()以确保组件控件被绘制

 

复合控件的绘制由三个函数共同负责:Draw(),CountComponentControls()ComponentControl()。发生的次序为:

1.调用复合控件的Draw()

2.之后框架调用复合控件的CountComponentControls()获取其组件控件的个数

3.框架通过调用ComponentControl()遍历所有组件控件,获取每个控件的指针

 

对于复合控件来说,Draw()通常无关紧要,因为真正的绘制工作一般会被委派给组件控件。但规范的做法是,在绘制组件控件前,复合控件至少该用默认颜色填充其客户矩形。

 

为使复合控件正常工作,最后需要添加SizeChanged()函数,与CSimpleControl不同,CCompoundControl需要一些重要代码来确保其组件控件的尺寸被正确的设置。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值