你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 专家论坛
SCO Unix平台OUCL开发研究(十五)
 

2)窗口父/子关系

Object Uuix Class应用程序中,界面元素(窗口、对话框和控件)都是通过父/子链相联系的。两个界面元素中若有一个是另一个的父窗口,那么它们两个便是相关联的。不是把这种父子关系同继承关系或事例拥属关系相混淆。后面两种都是对象关系。子窗口并不一定继承它的父窗口,亦或从父窗口继承任何属性。子窗口是这样一种界面元素,它接受另一个界面元素的管理。例如,列表框是由其所在的窗口或对话框来管理的。只有当父窗口显示着的时候,子窗口才能显示出来。当关闭父窗口时,子窗口自动关闭。

在构造一个界面元素时,系统自动默认当前的窗口或者对话框为控件的父窗口,子窗口控件对象通过它的数据成员Parent来记录它的父窗口的界面元素,并从父窗口的位置中计算该控件相对与父窗口的位置。而父窗口也通过成员数据ControlList来记录每个的子控件对象。ControlList是一个对象列表指针,它的结构实体是一个类结构,其中的数据成员指向一个通用的Tcontrol指针,这样保证以后对某个对象指针引用的正确性。当定义一个新的带控件的对话框的界面类时,也要定义初始化函数来构造每个子控件对象。随后,当应用程序调用父窗口对话框的ExecDialog成员函数时,便生成父窗口对话框的界面元素。如果成功,在接着调用每个子控件对象的成员函数Show,以便显示每个子控件对象。显示与否,要看每个子控件对象的显示属性EnableFlag是否为TRUE

通常还要重定义对话框的ExecDialog虚函数,以便在生成子控件对象之后能在执行某些设置任务,比如向列表框中填充表项。在重定义的成员函数ExecDialog中,一定要把调用当前对象基类的ExecDialog成员函数放在最后一句。

3)消息处理

Object Unix/Linux Class Library处理用户的键盘事件的方法是重定义派生类的KeyEvent成员函数。该函数提供给用户处理各自不同键盘事件接口。通过重定义该函数,就可以得到所有对话框子对象控件的按键事件,通过类成员函数GetClassName来判断当前的控件类型,再根据定义好的对话框类对象数据的对象指针,进行比较,判断是否为该个对象。在定位好该个对象后,就可以设计响应该控件的业务处理。

①对控件事件的响应

     这里对控件事件的响应采用对虚函数PressEnterEvent的重载来响应控件时间。

int TUserDialog::PressEnterEvent(void)

{

 TButton *Button;

 if(strcmp(ControlList->Control->GetClassName(),"BUTTON")==0){

       Button=(TButton *)ControlList->Control;

       switch(Button->ButtonType) {

           case SAVE_BUTTON:

               //处理按下确认键,该段程序需要用户自己编写

               break;

           case EXIT_BUTTON:

              //处理按下确认键,该段程序需要用户自己编写

              break;

       }

   }

   return 1;

}

对按钮事件的响应有别于其它控件,因为按钮控件有其唯一的ID标识,所以采用case语句比较用户按下哪个按钮控件。

②对菜单事件的响应

前面已经说过,对每个菜单选项,都有一个可供调用的成员函数,包括用户自己定义的成员函数和Object Unix/Linux Class Library本身继承的基类成员函数如上例按下退出系统子菜单选项执行的Close函数。

例如,对于菜单项文件|打开文件,对应有成员函数OpenFile将被调用。这里只是显示一个消息框。

void TLfrWindow::OpenFile(void)

{

  MsgDialog(“信息窗口”,“打开一个文件”);

}

4 结语

Object Unix/Linux Class Library提供了一种有趣的开发SCO Unix/Linux环境下的文本模式应用程序的新方法。直到最近,大多数Unix编程都需要Unix C编译器和大量分离而复杂的开发工具,这样,Unix应用程序开发显得冗长、复杂和令人费解。借助Object Unix/Linux Class Library应用程序框架,Unix编程就容易了许多。

  推荐精品文章

·2024年12月目录 
·2024年11月目录 
·2024年10月目录 
·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089