应用程序必须从标准的Object Unix/Linux Class Library类Tapplication(或者Tapplication派生的某个类)派生出新的类。这个新类至少应该重定义一个虚拟成员函数InitMainWindow。InitMainWindow在Object Unix/Linux Class Library应用程序初始化期间构造一个主窗口对象。示例如下:
class TLfrApplication : public TApplication {
public:
TlfrApplication(char *AppName)();
Virtual void InitMainWindows(void);
};
这个主窗口对象存放在应用程序对象的MainWindow数据成员之中。应用程序对象拥有主窗口对象,但两者在层次上并不相关。这种拥属关系被称为事件链(instance linkage)。TlfrApp::InitMainWindow的定义如下所列:
void TlfrApp::InitMainWindow(void)
{
MainWindow=new TWindow("Sample Object Unix Class Program",
1,0,78,25,WHITE_BLUE,BLUE_BLUE);
}
TlfrApp的主窗口对象是作为TWindow的一个事例而构造的(如上所似)。其中第一个参数是窗口的标题,它是应用程序主窗口对象的Caption的数据成员,已被置为“Sample Object Unix Class Program”。这样,主窗口对象将作为Object Unix/Linux Class Library的派生类的一个事例。
下面给出一个完整的示例:
#include “owl.hpp”
class TLfrApplication : public TApplication {
public:
TlfrApplication(char *AppName)();
Virtual void InitMainWindows(void);
};
int main(void)
{
InitScreen();//初始化curses库
TlfrApp LfrApp(“Sample Object Unix Class Program”);
LfrApp.Run();
FreeScreen();//释放分配的curses库空间
Return 0;
}
(3)TWindow
窗口对象代表交互式环境的主窗口,当然,也可以定义一个相应的子窗口。所有应用程序的主窗口类必须从它派生,并又TApplication类的初始化主窗口函数InitMainWindow实例化它。 Object Unix/Linux Class Library应用程序至少应该有一个主窗口。在应用程序启动之时,主窗口被显示出来。Object Unix/Linux Class Library程序的主窗口通常是一个TWindow派生类的事例。实际上,在本系统的定义中TWindow类就是作为主窗口类使用的,当然,可以做为其他子窗口使用,但,对于子窗口,一般采用对话框方式来替代子窗口。
|