打印本文 打印本文 关闭窗口 关闭窗口
Power Builder窗口使用两技巧
作者:武汉SEO闵涛  文章来源:敏韬网  点击数820  更新时间:2009/4/24 21:42:45  文章录入:mintao  责任编辑:mintao

移动没有标题条的窗口

有时候应用程序需要使用没有标题条的窗口,比如只想显示一行信息的弹出窗口。常规情况下,这样的窗口显示在什么地方就呆在什么地方,用户无法使用通用的拖动标题条的办法来移动窗口。为了让用户能够移动这类窗口的位置,就需要特殊编程。一个简单方案是,让用户像使用标题条移动窗口位置那样在窗口内部直接通过拖曳窗口实现位置移动。方法很简单,在窗口的MouseDown事件中写上代码:Send(Handle(This),274,61458,0)上述语句向编写该代码的窗口发送一条窗口消息WM_SYSCOMMAND(274),并把消息的WordParm参数设置为SC_MOVE+1(61458)。这条语句的功能通知窗口用户将移动鼠标,鼠标移动时窗口要随之一起移动。语句中Send()、Handle()是PowerScript函数,Send()函数向窗口发送一条Windows消息,Handle()得到窗口的句柄。

控制窗口的自动重绘

   缺省情况下,程序运行后,每当用户改变窗口以及窗口上控件的大小时,系统都会自动重绘窗口以及窗口上的控件。反复的重绘降低了应用程序的性能,并出现闪烁现象。为避免上述缺陷,应用程序可以在用户操作前暂时关闭重绘功能,操作完成后再重新绘制屏幕。利用对象的SetRedraw()函数可实现上述控制功能。SetRedraw()要求一个参数,选择FALSE时关闭对象的自动重绘功能,选择TRUE时立即重绘对象,并且每当修改对象时都自动重绘对象。窗口对象有个数组型属性Control[],它登记了窗口中放置的所有控件,并且控件在该数组中的登记次序就是系统绘制各控件的次序。当应用程序中出现控件闪烁或某些图形碎片遗留在窗口上时,那么就应该检查相应窗口及控件的自动重绘方式。把操作过程(特别是改变控件或窗口的视觉特性的操作)中多次重绘屏幕组合成操作完成后的一次重绘将会大大提高屏幕重绘速度。例如,当用户改变窗口大小时,我们希望窗口中的控件随之改变大小,那么可以在窗口的Resize事件中使用下述格式编写代码:

  1. 关闭窗口自动重绘功能This.SetRedraw(FALSE)。
  2. 修改各控件的大小。
  3. 最后集中重绘窗口和控件This.SetRedraw(TRUE)。

打印本文 打印本文 关闭窗口 关闭窗口