godhawk 发表于 2011-8-22 10:48:18

怎么检查一个窗口是否“LOCK”

本帖最后由 godhawk 于 2011-8-22 10:50 编辑

比如用函数GUICtrlSetState ,设置成 @SW_LOCK

但是有什么办法判断它是否lock呢,

有人可能会说用WinGetState,但是我实验了一下,做了一个复选框来确认

$state = WinGetState($myPro)

If BitAnd($state, 8) Then
GUICtrlSetState($lock[$i] , $GUI_UNCHECKED)
Else
GUICtrlSetState($lock[$i] , $GUI_CHECKED)
EndIf

但是无论我是否让$pro被@SW_LOCK,这个复选框都是被选中的,没办法变化

窗口属性的计算值应该是这样的吧?
;~1 = 窗口存在
;~2 = 窗口可见
;~4 = 窗口可用
;~8 = 窗口激活
;~16 = 窗口最小化
;~32 = 窗口最大化

而且用BitAnd($PRO, 4) 来判断的话,会被@SW_Disable 影响,那么4肯定是指enable和disable

那么lock到底怎么来识别呢?

user3000 发表于 2011-8-22 10:53:49

建议另行设立个变量来“存储”这个“lock"状态!
当然这只是简单情况下用,如果需要记录很多窗口或控件就不适用了!

godhawk 发表于 2011-8-22 13:50:48

呃,是我被说明文档误导了……

@SW_LOCK 锁定窗口, 以避免刷新.

但是用If BitAnd(WinGetState($myPro), 8) 取得的判断,和这个lock没关系,这个是判断是否在前台还是后台

结果lock还是不知道怎么识别……
页: [1]
查看完整版本: 怎么检查一个窗口是否“LOCK”