阅 读 文 章

SCO UNIX环境下面向对象的程序设计 4

[来源:网上转载 (http://www.chinaunix.net) | 作者:网友(hbczjzc) | 时间:2007-05-27 | 浏览:人次 ]


第四章 增加菜单
大多数交互式UNIX应用程序的主窗口内都有菜单,它可为用户提供各种选择,如File|Save、File|Open、以及Help。本章将增加一个标准的菜单到范例程序中。

在交互式应用程序环境中,菜单选择属于用户事件。响应菜单选择与响应其它用户事件具有很大的相似性,本章将按以下步骤为范例程序增加菜单:

l     定义菜单

l     加载菜单项到主窗口对象中

l     定义对菜单选择的响应

l     设置菜单的有效性及无效性

4.1 主窗口菜单
应用程序菜单不是单独的对象,而是归属于主窗口。事实上,它作为主窗口的一个属性对象,被存放在包含窗口生成属性的窗口对象数据成员MainMenu字段中,在应用程序初始化主窗口中通过调用主窗口类的成员函数InsertMainMenu来增加主菜单以及通过调用主窗口类的成员函数InsertSubMenu来增加某项主菜单的子菜单。

下面我们给出TlfrApplication类的初始化主窗口函数InitMainWindow的源代码。

void TLfrApp::InitMainWindow(void)

{

MainWindow=new TLfrWindow("Object UNIX Class Program",                           1,0,78,25,WHITE_BLUE,BLUE_BLUE);

     TMenu *Main1,*Main2;

     Main1=new TMenu(1,"C文件",'c');

     Main2=new TMenu(2,"V帮助",'v');        

     MainWindow->;InsertMainMenu(Main1);

     MainWindow->;InsertMainMenu(Main2);

     MainWindow->;InsertSubMenu(Main1,new TSubMenu(1,"[A]打开文件",'a',"打开文件",TRUE,(MEMBERFUNCTION)TLfrWindow::OpenFile));

     MainWindow->;InsertSubMenu(Main1,new TSubMenu(2,"-",0,"",TRUE));

     MainWindow->;InsertSubMenu(Main1,new TSubMenu(3,"[X]退出系统",'x',"返回操作系统",TRUE,(MEMBERFUNCTION)TLfrWindow::Close));

MainWindow->;InsertSubMenu(Main2,new TSubMenu(1,"[A]帮助”,

'a',"",TRUE));

}

分析上述程序行可以看出,在实例化主窗口对象后,在程序的第四、五行定义主菜单对象并通过主窗口类的成员函数InsertMainMenu把主菜单对象赋给主窗口主菜单数据成员,作为主窗口的一些菜单对象属性使用。接着通过InsertSubMenu成员函数添加各主菜单项的子菜单项。组成完整的主窗口菜单系统。

主菜单以及子菜单对象的构造函数定义请参阅后面的类说明。

这样,主窗口显示出来时,便把主菜单项同时显示出来。然而,为了赋予菜单选项一定的使命,必须遵循以下步骤来响应菜单选择。

4.2 解释菜单消息
当用户从窗口菜单选项时,窗口能够接收到该命令消息。为了能够处理当选择特定的菜单选项时Object UNIX Class Library系统送来的命令消息,需要定义Object UNIX Class Library命令响应成员函数,对于命令响应成员函数,需要用户在主窗口类中定义特定的成员函数,如下所似:

void OpenFile(void);

该函数和TLfrWindow类中的成员函数一样,需要由用户在定义从TWindow类派生出的派生类TLfrWindow时定义的。
论坛热门帖子: [lch203] 写得蛮好的linux学习笔记(10-21)
[黑马制造] 学习java的30个目标(10-19)
[笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19)
[udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18)
[沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18)
TAG标签: 对象 程序设计 面向 环境 菜单 函数 窗口 成员 用户 定义

最新评论 共有0位网友发表了评论

发表评论

评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名:(注册)
密码:
验证码:
匿名发表

网站地图友情连接交流论坛网站投稿广告服务联系我们留言本站长统计
Some rights reserved: www.chmhome.com, 鄂ICP备07010232号 E-mail:chinakafei@live.com,QQ:552766
中国咖啡技术网(Chmhome):国外编程技术书籍,中文编程手册,经典编程文章,交流技术,技术软件下载,计算机论文,毕业论文.