引用:第八章 界面对象
表示窗口、对话框、和控件的对象称为用户界面对象,或简称为界面对象。本章讨论界面对象的要求和行为,以及与其它实际出现在屏幕上的窗口、对话框和控件的关系。
本章也讲述应用程序的不同界面对象之间的关系,以及对应用程序界面对象的响应方式。
8.1 TObject
TObject是一个基类,它对所有的窗口界面类TDialog、TWindow及其派生类:TControl,都是通用的。TObject定义了窗口、对话框和控件对象的共同行为。TObject的成员函数定义如下:
l 维护Object对象和窗口元素结构的双重性,包括构造函数和控件对象的父指针对象。
l 维护所有从基类派生的事件响应。
l 自动支持派生类的显示。
TObject是在幕后工作的。实际上很少从TObject直接导出新的类。在从TWindow和TDialog派生新类时,对象可以继承许多TObject定义的功能。
8.2 为何要用界面对象
既然基于UNIX文本curses环境的交互式应用程序已经有了直观窗口、对话框可控件了,为何还需要界面对象呢?
每个节对象豆油一个与之相关的界面元素,它不是对象,而是一个物理的窗口、对话框或控制,界面对象只是作为直观界面元素的面向对象代码。界面对象提供了用于生成、初始化、管理与之相关的界面元素。界面对象的数据成员保存有关的数据,包括其界面元素的指针,它的主窗口和子窗口。界面对象的成员函数能处理许多交互式应用程序的内部编程细节。
具有相关界面元素的界面对象的结构能根据情形正确地处理窗口、对话框和控件。例如,为了生成一个完全的界面对象,必须要调用两个成员函数。第一个是构造函数,它构造界面对象和设置对象的属性,如类型和菜单。
第二个成员函数是InitMainWindow和InitDialog,它把界面对象同新的界面元素联系到一起。InitMainWindow成员函数构造主窗口的特定的界面元素,而InitDialog则构造特定的对话框对象,组成包含用户自己需要的控件列表。通过调用各自不同对象的成员函数Show把界面元素在用户屏幕上显示出来。
InitMainWindow和InitDialog能够保证正确地构造界面对象的同时保证对象有足够的内存。
类似地,在删除界面对象时,系统自动释放对象的内存。但是,这只是在调用delete函数时,才删除界面对象,否则,界面对象一直在系统内存中保留着,直到退出应用程序系统,这样能够保证系统能在最短的时间内显示用户的屏幕对象。
应该注意到,生成界面对象和生成对应的直观界面元素并不一定意味着在屏幕上能看到什么东西。当建立直观元素时,Object UNIX Class Library将要检查控件的类型EnableFlag是否置为TRUE。EnableFlag和其它的窗口控件类型是在构造函数中对数据成员进行设置的。仅当各个属性成员数据都设置为TRUE时,界面元素才在生成后通过对象的成员函数Show显示出来。
任何时候,通过调用界面对象的成员函数Show可以显示或隐藏界面元素。
8.3 窗口父/子关系
在Object UNIX Class应用程序中,界面元素(窗口、对话框和控件)都是通过父/子链相联系的。
两个界面元素中若有一个是另一个的父窗口,那么它们两个便是相关联的。不是把这种父子关系同继承关系或事例拥属关系相混淆。后面两种都是对象关系。子窗口并不一定继承它的父窗口,亦或从父窗口继承任何属性。
子窗口是这样一种界面元素,它接受另一个界面元素的管理。例如,列表框是由其所在的窗口或对话框来管理的。只有当父窗口显示着的时候,子窗口才能显示出来。当关闭父窗口时,子窗口自动关闭。
8.3.1 控件列表
在构造一个界面元素时,系统自动默认当前的窗口或者对话框为控件的父窗口,子窗口控件对象通过它的数据成员Parent来记录它的父窗口的界面元素,并从父窗口的位置中计算该控件相对与父窗口的位置。而父窗口也通过成员数据ControlList来记录每个的子控件对象。ControlList是一个对象列表指针,它的结构实体是一个类结构,其中的数据成员指向一个通用的Tcontrol指针,这样保证以后对某个对象指针引用的正确性。
| 论坛热门帖子: | [lch203] 写得蛮好的linux学习笔记(10-21) [黑马制造] 学习java的30个目标(10-19) [笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19) [udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18) [沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18) |
| TAG标签: | 对象 程序设计 面向 环境 界面 控件 窗口 成员 函数 元素 |
注册
个人空间
