设为首页 加入收藏

TOP

17.6.1 控件环境
2013-10-07 01:04:31 来源: 作者: 【 】 浏览:56
Tags:17.6.1 控件 环境

17.6  CCoeControl的绘制支持

现在是时候总结迄今为止我们所了解的CCoeControl的绘制功能了。 首先,控件是覆盖全部或部分窗口的矩形。所有具体的控件(最终)是从抽象基类CCoeControl派生来的。控件、其他控件和窗口之间存在着各种各样的关系:

控件可以拥有窗口,或者是寄宿者;

控件可能有 0 或多个组件控件,控件的组件不能重叠,并且应该完全包含在控件的矩形中;

控件正好和一个窗口相关联,不管是作为拥有窗口控件还是寄宿控件;

所有的寄宿控件都是某些控件的组件(最终,该组件能够追溯到某个拥有窗口控件);

组件控件可以拥有一个窗口(比如,对于一个小的备份区域)。

控件包含对绘制、应用程序发起的重绘和系统发起的重绘的支持。应用程序通过使用DrawNow()函数要求控件进行绘制;当控件窗口的某一区域变成无效时,窗口服务器让控件进行绘制;在这两种情形下,调用Draw()来处理绘制。提供激活和释放并重置控件窗口上使用的图形上下文的函数。

17.6.1  控件环境

每一控件含有一个指向控件环境(control environment)的指针,任何控件通过指定ControlEnv()(公共的)或iCoeEnv(受保护的),可以访问控件环境。

 

从派生的控件或应用程序 UI 类,包括你自己应用程序的应用程序 UI,你可以通过 iCoeEnv来访问 CCoeEnv。如果有一个指向控件或应用程序 UI 的指针,可以使用它的公共函数ControlEnv()。如果这两者都不能访问,可以使用静态函数CCoeEnv::Static(),它使用线程本地存储(TLS)来找出当前环境。如果需要频繁的访问,因为TLS不是特别快,还可以在对象的某个地方存储一个指针用于更快的访问。

控件环境包括以下工具(见图17.11):

 

对基本GUI资源的访问,这些资源包括:窗口服务器会话、窗口组、屏幕设备和图形上下文;

一个持久可用的文件服务器会话,通过FsSession()使用;

用于向屏幕绘制的标准字体(10 磅 sansserif),通过NormalFont()使用;

()函数,用来刷新窗口服务器缓冲并等待片刻(可选);

便利函数,用来创建新的图形上下文和屏幕设备字体;

对多资源文件和读取资源的许多函数的支持(参见第13章)。

完整的清单参见coemain.h中CCoeEnv的定义。

【责任编辑:董书 TEL:(010)68476606】

回书目   上一节   下一节

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇17.6.3 组件控件 下一篇17.1 绘图基础

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: