第三章 在窗口中显示文本
本章将讲述如何在主窗口的活动区域内显示文本以及如何重新显示主窗口,由于不同的应用程序主窗口可能不一样,因此需要在设计应用程序时,需要定义自己的主窗口显示。
3.1 在窗口中绘制文本
你可以在主窗口的活动区域内显示用户需要的文本,当然,您应该在主窗口类对象中定义一个成员函数来实现该方式。如果您不是在应用程序对象中执行该操作,您必须指定主窗口类对象的指针。方法如下:
void TlfrWindow::ShowText(void)
{
setcolor(FTColor);
outtextxy(w1,Left+10,Top+5,”Show text”);
}
需要说明的是,由于Object UNIX Class Library已经封装了curses屏幕库操作,您可以直接调用它提供的函数对屏幕直接操作而不管curses的虚拟窗口指针以及颜色设置。第一行的setcolor函数调用引用的FTColor是主窗口的数据成员,在实例化主窗口类TlfrWindow时,已经设置好主窗口的前景颜色和背景颜色以及窗口的坐标和长度和宽度。所以从派生类中,您已经继承了这些属性。
第二行的outtextxy函数也是封装了的curses库的显示文本操作,该函数执行在窗口的某个位置用当前颜色显示文本。其中的w1参数是默认的curses库的屏幕窗口的指针,所有的屏幕操作系统已经默认就是w1屏幕curses窗口,第二个参数以及第三个参数是显示的相对坐标列和行,第四个参数是要显示的内容。
如果您不在主窗口类成员函数定义显示的内容,您必须指定主窗口类的指针,例如,您在TLfrApplication类中定义一个函数来完成以上操作,则方法如下:
void TlfrApplication::ShowTest(void)
{
setcolor(MainWindow->FTColor);
outtextxy(w1,MainWindow->Left+10,MainWindow->Top+5,”text”);
}
3.2 清屏
另一个可以添加到文本绘制程序中的功能是清屏。对于菜单项选择或者某些用户操作,读者也许需要强制清屏。
我们在主窗口类中定义一个成员函数来完成该操作。
Void TlfrWindow::Clear(void)
{
bar(w1,Left+2,Top+1,Width-4,Height-2,BKColor);
}
其中,bar函数也是由Object UNIX Class Library提供给用户的一个采用某种颜色画屏幕矩形区域的函数,第一个参数是屏幕curses窗口的指针,第二个参数和第三个参数是矩形左上角的坐标:列和行,第四个参数和第五个参数是矩形的长度和宽度,第六个参数是矩形填充的颜色。
3.3 重新显示主窗口
当用户在执行完某种操作后,也许需要重新绘制主窗口,您可以执行主窗口类的成员函数Show来完成该操作,方法如下:
void TlfrWindow::ReShowWindow(void)
{
TWindow::Show();
}
3.4 定义用户自己的主窗口
由于不同的应用程序有自己不同的主窗口显示,所以,对用户来说,需要定制自己的处窗口,在Object UNIX Class Library系统提供的主窗口显示中,只采用读者已经定义好的前景和背景颜色绘制窗口边框和填充颜色,显示标题以及主菜单和信息行,这些基本要求也许不能满足用户自己的要求。例如,用户想在主窗口的中间位置显示版权信息,则需要用户自己定义主窗口的显示函数,您必须从新定义TWindow类提供的虚拟函数Show。方法如下:
void TlfrWindow::Show(void)
{
TWindow::Show();
setcolor(FTColor);
outtextxy(w1,Left+10,Top+5,”Object UNIX Class Program”);
outtextxy(w1,Left+10,Top+6,”All Right Reserved”);
}
其中,第一行调用基类TWindow系统的主窗口显示,以下三行接着在主窗口的中间显示一些用户的文本。
如果用户想重新定义处窗口的显示方式,则用户就不需要调用TWindow::Show()函数,所有的主窗口边框,标题以及菜单就得用户自己显示,当然,用户没有这个必要,因为,Object UNIX Class Library已经替您想到您该想到的事情了。
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/