_screen相关问题
一、vfp的_screen尺寸?
_screen.height=sysmetric(2)
_screen.width=sysmetric(1)
如果_screen按以上尺寸有个问题,发现不包含_screen窗口caption的高度
另外包不包含菜单、自定义工具栏、自定义状态栏的高度???????
另外_screen.caption无height属性,如何取.caption高度????
二、表单的autocenter=.t.
如何让表单在菜单及状态栏之间居中显示(autocenter=.t.)????
目前看到结果是在工作区按居中显示,而工作区中有自定义状态栏,这样打开表单显示看到就不是居中
三、如何在vfp中指定windows的任务栏为自动隐藏???
[解决办法]
一、
Sysmetric(9) && 窗口标题的高度,这取决于 Windows 的主题设置。
直接将 _Screen 最大化就可以了:_Screen.WindowState=2
二、
是有这个问题,你把状态栏的高度去掉后,再用代码居中。
不过我的程序这个问题并没有严格必须去掉状态栏的高度,意义不大吧。
三、
Declare Integer FindWindow In Win32API As _FindWindow String,String
Declare Integer ShowWindow In Win32API As _ShowWindow Integer,Integer
lnTaskbarHandle=_FindWindow('Shell_TrayWnd','')&& 取得任务栏句柄
=_ShowWindow(lnTaskbarHandle,0) && 0 - 隐藏 1 - 显示
[解决办法]
那就用 Bindevent() 绑定一下 _Screen 的 Resize 事件
Public oHandler
oHandler=Newobject("myhandler")
Bindevent(_Screen,"Resize",oHandler,"myresize")
Define Class myhandler As Session
Procedure myresize
If _Screen.WindowState=2
_Screen.MaxButton=.T.
_Screen.MaxButton=.F.
Endif
Return
Enddefine
Public oHandler
oHandler=Newobject("myhandler")
Bindevent(_Screen,"Resize",oHandler,"myresize")
Define Class myhandler As Session
Procedure myresize
Declare Integer FindWindow In Win32API As _FindWindow String,String
Declare Integer ShowWindow In Win32API As _ShowWindow Integer,Integer
lnTaskbarHandle=_FindWindow('Shell_TrayWnd','') && 取得任务栏句柄
Do Case
Case _Screen.WindowState=2
=_ShowWindow(lnTaskbarHandle,0)
Case _Screen.WindowState=1
=_ShowWindow(lnTaskbarHandle,1)
Endcase
Return
Enddefine