在PB中调用API修改窗口样式
  无论何时打开MDI框架的工作表,不管窗口的类型和样式位设置成什么,它们都将被PB覆盖。这可利用系统菜单
来缩放,最小化,和最大化窗口。有时,用户可能希望提供略微不同的行为方式,这时需要使用SETWINDOWLONGA()函数,该函数定义如下:
//WIN31
FUNCTION LONG SETWINDOWLONGA(UINT hwindow,integer unindex,long lnewvalue)&
library "user.exe"
//win32
FUNCTION LONG SETWINDOWLONGA(UINT hwindow,integer unindex,long lnewvalue)&
library "user32.dll"
起作用的窗口作为句柄hwindow被传递。unidex变元用来指定需要修改窗口的什么区域,如果用户希望修改
样式,该值总是(-16),inewvalue变量是新样式的位表示。
windows常量 数值 描述
____________________________________________________________
ws_border 8388608 窗口具有正常的边框
ws_caption 12582912 窗口具有标题栏
ws_dlgframe 4194304 窗口无标题栏
ws_ex_topmost 8 窗口出现在所有的非顶层窗口之上.
ws_ex_transparent 32 窗口之下的任何窗口都不会被该窗口遮盖
ws_hscroll 1048576 窗口具有水平滚动条
ws_maximize 16777216 窗口具有最大化状态
ws_maximizebox 65536 窗口具有最大化按钮
ws_minimize 536870912 窗口具有最小化状态
ws_minimizebox 131072 窗口具有最小化按钮
ws_overlapped 0 窗口具有标题和边框
ws_popup 2147483648 作为弹出式窗口来创建
ws_sysmenu 524288 窗口的标题栏具有系统菜单框
ws_thickframe 262144 窗口具有可缩放的厚边框
ws_vscroll 2097152 窗口具有垂直滚动条
______________________________________________________________________
上表列出的常量可以通过累加数值的方式来组合。
在修改当前窗口的样式之前,先要获得当前的设置,必须使用另一个API函数getwindowslonga()
该函数申明如下:
//win31
FUNCTION LONG getWINDOWLONGA(UINT hwindow,integer unindex)&
library "user.exe"
//win32
FUNCTION LONG SETWINDOWLONGA(UINT hwindow,integer unindex)&
library "user32.dll"
EXAMPLE://通过添加最小化按钮并删除最大化按钮来修改已有窗口
uint hwindow
integer gwl_style=-16
long ws_maximzebox=65536,ws_minimizebox=131072,101dstyle
hwindow=handle(this)
101dstyle=getwindowlonga(hwindow,gwl_style)
setwindowlonga(hwindow,gwl_style,101dstyle+ws_maximzebox+ws_minimizebox)