|
PowerBuild
的高级菜单设计技术
|
| 警学院计算机中心 程连孚
做为事件驱动的系统,菜单所起的作用是明显的。一个好的菜单,能给 程序起到锦上添花的作用。PowerBuild 5.0(以下简称PB5)在这方面给用户 提供了很大的灵活性,使用户能根据自已的爱好和需求设计出各种不同格 的菜单。下面就谈谈如何在PB5中实现两种别致的菜单:动态菜单和声音菜单。 一、动态菜单 如果一个程序的选项复杂,那么菜单项也会相应地增多。在主界面上设置过 多的菜单项会影响界面的简洁,有时也会使用户无所适从。如果将菜单设置 成动态菜变化的菜单,在一个功能下只显示相应的菜单,那么用户使用起来 会效果更好。 菜单在PB5中是窗口的一个属性,我们可在通过改变这种属性来改变窗口菜 单的显示。我们假设在已存在一个库test.pbl,该库中有一个标准的File菜 单(m_file), 窗口上有一个按钮"Change to Another Applicatiuon",按下后,程序将启 动另一个应用模块,该模块将用自己的菜单来替代现有的菜单。我们可以通 过下面的方法来实现这一功能。 1、在菜单模板下,创建一个菜单,设为 m_test,它与前面的file菜单 有完全不同的设置 2、利用"Change to Another Application"按钮的脚本来改变菜单的显示。 单现"Script"按钮,在其中添加如下的语句: Parent.ChangeMenu(m_test) 3、运行程序,即可得到结果。 需要说明地是,改变菜单项必须通过ChangeMenu( )函数,而不能通过标 准的"."来无成,因为在PB5中,菜单对窗口来说是保护(protected)属 性,该属性只能通过界面函数来访问。另外,如果在菜单项中添加脚本来 动态改变菜单,则脚本中应该使用语名: ParentWindow.ChangeMenu(m_test) 二、为菜单添加声音 在多媒体演示产品中,我们经常会遇到这样的情形,当鼠标单击某一菜单 或按钮时,音箱会发出某种音效(如果有这种设备的话),这使得软件更 加生动。在 PB中我们也可以很容易地实现这一点。 PB中没有直接调用多媒体功能的函数,要想为一个程序加入多媒体功能, 必须通过调用Windows API函数"SndPlaySound("或"PlaySound()"来完成。 假设我们己有有了一个库"test.pbl",其菜单也如前所示,具体实现步骤 如下 : 1、在"Declare"菜单中选择"Local External Functions…",弹出的对话框中填入如下的声明语句: Function Boolean sndPlaySound(String s_file,& UINT u_flags) Library "WINMM.dll" Function UINT LoadLibrary(String as_library) "kernel32.dll" Subroutine FreeLibrary(UINT Hinstance)Library "kernel32.dll" 实际上PB中的菜单也是动态的,"Declare"必须在编辑菜单时才出现 2、为每个菜单项选择相应的声音文件" .WAV" 3、为菜单项添加脚本,驱动声音文件,以"new"菜单为例: sndPlaySound ("new.wav",0) sndPlaySound函数有两个参数,前面的一个为声音文件名,后面的一 个为播放方式,主要用到有如下几个: 0--同步播放 1--异步播放 2--找不到声音文件即返回 4--播放声音文件在内存中的映象 声音文件最好是放在当前目录下,否则系统将按如下的顺序进行查 找:当前目录,Windows目录,Windows系统目录,PATH中列出的目录, 网络映射目录。 完成上述步骤后,运行程序即可听到菜单的声音了。 作者地址:河北省廊坊市武警学院计算机中心 邮编: 065000 E_mail:chlf@hotmail.com
|