|
在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)
|