第五章 增加对话框
完整有特色的交互式应用程序可能拥有许多不同的窗口对象(如窗口、控件、对话框)。主窗口之外的所有窗口都称为子窗口,每个子窗口都只有一个父窗口,一个父窗口可以有多个子窗口。
这种父子关系形成了各个应用程序的相关父子窗口系统。在这个系统中,主窗口是终极父窗口。
有两种子窗口:一个是独立的子窗口,这种子窗口能控制其自身的显示与定位。消息框和对话框都是独立的子窗口。另一类是非独立的子窗口,这种子窗口在其父窗口的表面显示,而且只能在父窗口的范围之内移动。控件(如消息框中的按钮)就是非独立子窗口。这一章将讲述独立的子窗口。
5.1 增加一个对话框
对话框很象一个弹出式窗口,但它通常在屏幕上停留一段时间且执行一种特定的任务。对话框的表面一般都有很多控件组合来显示静态文本、完成数据输入、列表内容选择、互锁按钮选择能内容并根据用户的选择和输入执行某种任务或在激活另一个对话框。
象弹出窗口一样,对话框是一个独立的子窗口。从概念上讲,增加一个对话框与增加一个弹出式窗口别无二样。虽然对话框酷似窗口,但它与窗口还存在着重要差异:
l 对话框类是由TDialog派生的,而不是从TWindow派生的。不过TDialog和TWindow两个都是从TObject派生的。
l 通常,对话框需要用户规定其大小、位置。
l 通常,对话框执行一项较短的任务且返回一个值
例如:CanClose消息框根据用户的选择返回一个1或者0的应答。
5.2 增加用户自定义对话框的数据成员与操作函数
为完成用户特定的对话框界面元素时,需要自己在布局上、控件选择上重新定义。Object UNIX Class Library提供了十三个控件类可供选择,这些类都从TControl类派生出来的,而Tcontrol类又是从TObject基类派生的。用户可以参考后面的详细类参考选择自己实际需要的控件类设计自己的对话框对象。下面是一个对话框对象的范例,您可以模仿该例子构造自己的对话框对象:
class TUserDialog : public TDialog {
public:
TEdit *Edit1;
TComboBox *ComboBox1;
TLabel *Label1;
public:
virtual void InitDialog(void);
virtual int PressEnterEvent(void);
TUserDialog(char *caption,int left,int top,int width,
int height,int ftcolor,int bkcolor);
};
5.2.1 增加对象成员(控件)到对话框中
正如上面例子所定义的描述,用户在对话框中定义了三个对象属性:输入条Edit1、标签(静态文本)Label1以及下拉列表框ComboBox1。这三个对象各从TEdit类、TLabel类、TComboBox类派生。一般为对对话框的按钮进行分类,对话框还增加了线属性以及按钮属性。
在定义好数据成员后,您应该在对话框类的成员虚拟函数InitDialog中对您所定义的对象属性进行实例化,以确定各个对象的实际位置以及所表现的属性如颜色、状态、标题等内容。每个控件都有其属性,比如,您可以设置某个对话框的键盘响应属性。假设您不允许用户在输入条上输入字符,您可以这样设置:Edit1->;KeyEvent=FALSE,其它的属性请参考后面类参考。
| 论坛热门帖子: | [lch203] 写得蛮好的linux学习笔记(10-21) [黑马制造] 学习java的30个目标(10-19) [笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19) [udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18) [沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18) |
| TAG标签: | 对象 程序设计 面向 环境 控件 对话 窗口 一个 用户 函数 |
注册
个人空间
