chzj589
发表于 2019-9-2 14:38:28
afan 发表于 2019-8-31 10:47
GUIRegisterMsg 注册 $WM_NOTIFY 消息,并在消息中处理
如何注册,请教一下
Func WM_NOTIFY($hWnd, $Msg, $wParam, $lParam)
;如何得到Slider的句柄
Switch $hWnd
Case $idSlider1
MsgBox($MB_SYSTEMMODAL, "滑块值", _GUICtrlSlider_GetPos($idSlider1), 2)
GUICtrlSetData($Label, '滑块值 ' & _GUICtrlSlider_GetPos($idSlider1))
Case $idSlider2
MsgBox($MB_SYSTEMMODAL, "滑块值", _GUICtrlSlider_GetPos($idSlider2), 2)
Case $idSlider3
MsgBox($MB_SYSTEMMODAL, "滑块值", _GUICtrlSlider_GetPos($idSlider2), 2)
EndSwitch
EndFunc ;==>WM_NOTIFY
afan
发表于 2019-9-2 15:15:12
chzj589 发表于 2019-9-2 14:38
如何注册,请教一下
Func WM_NOTIFY($hWnd, $Msg, $wParam, $lParam)
帮助搜索 _GUICtrlSlider_Create()
chzj589
发表于 2019-9-2 16:11:58
afan 发表于 2019-9-2 15:15
帮助搜索 _GUICtrlSlider_Create()
谢谢!己学会了!
chzj589
发表于 2019-9-3 21:27:36
本帖最后由 chzj589 于 2019-9-3 21:29 编辑
afan 发表于 2019-9-2 15:15
帮助搜索 _GUICtrlSlider_Create()
用:Case $NM_CUSTOMDRAW,可及时响应,但按下滑动控件拖动时,窗口会闪烁。
不知是什么原因?请帮忙看看
Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
#forceref $hWnd, $iMsg, $wParam
Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndSlider, $hWndFrom1, $hWndSlider1, $hWndFrom1, $hWndSlider1, $hWndSlider2
$hWndSlider = $g_hSlider
If Not IsHWnd($g_hSlider) Then $hWndSlider = GUICtrlGetHandle($g_hSlider)
$tNMHDR = DllStructCreate($tagNMHDR, $lParam)
$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
$iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
$iCode = DllStructGetData($tNMHDR, "Code")
Switch $hWndFrom
Case $hWndSlider
Switch $iCode
Case $NM_RELEASEDCAPTURE ; 控件释放鼠标捕获
_DebugPrint("$NM_RELEASEDCAPTURE" & @CRLF & "--> 控件句柄:" & @TAB & $hWndFrom & @CRLF & _
"-->控件 ID:" & @TAB & $iIDFrom & @CRLF & _
"-->操作代码:" & @TAB & $iCode)
$g = _GUICtrlSlider_GetPos($g_hSlider)
GUICtrlSetData($Input1, $g)
Local $Label = GUICtrlCreateLabel($g, 305, 50, 70, 20)
;_Debug()
#cs
Case $NM_CUSTOMDRAW
$g = _GUICtrlSlider_GetPos($g_hSlider)
GUICtrlSetData($Input1, $g)
#ce
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NOTIFY
afan
发表于 2019-9-3 22:08:09
chzj589 发表于 2019-9-3 21:27
用:Case $NM_CUSTOMDRAW,可及时响应,但按下滑动控件拖动时,窗口会闪烁。
不知是什么原因?请帮忙看 ...
不太清楚,闪烁一般是窗口重绘的过程。如果你拖动时有关联那就是在重绘窗口。
chzj589
发表于 2019-9-7 10:23:10
afan 发表于 2019-9-3 22:08
不太清楚,闪烁一般是窗口重绘的过程。如果你拖动时有关联那就是在重绘窗口。
我鼠标划过滑动条(Slider)控件为何就响应,看你的需要按下才响应?
$WM_NOTIFY 消息要如何处理?请赐教!谢谢!
afan
发表于 2019-9-7 10:38:59
chzj589 发表于 2019-9-7 10:23
我鼠标划过滑动条(Slider)控件为何就响应,看你的需要按下才响应?
$WM_NOTIFY 消息要如何处理?请赐教 ...
判断鼠标是否处于按下状态即可,如 GUIGetCursorInfo()
chzj589
发表于 2019-9-7 19:04:45
afan 发表于 2019-9-7 10:38
判断鼠标是否处于按下状态即可,如 GUIGetCursorInfo()
谢谢!搞定。
chzj589
发表于 2019-9-22 19:43:36
afan 发表于 2019-8-31 10:47
GUIRegisterMsg 注册 $WM_NOTIFY 消息,并在消息中处理
A版,请问GUIRegisterMsg 注册 $WM_NOTIFY 消息,如何消息中处理?
我这样处理,拖动一个时,其它都会闪烁,请指点
Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
#forceref $hWnd, $iMsg, $wParam
Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR
Local $hWndSlider8, $hWndSlider9
$hWndSlider = $banjingxc
If Not IsHWnd($banjingxc) Then $hWndSlider = GUICtrlGetHandle($banjingxc)
$tNMHDR = DllStructCreate($tagNMHDR, $lParam)
$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
$iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
$iCode = DllStructGetData($tNMHDR, "Code")
$a = GUIGetCursorInfo("Code")
Switch $hWndFrom
Case $hWndSlider
Switch $iCode
Case $NM_CUSTOMDRAW
If $a = 0 Then
Else
;五星缩放()
;上弧宽度()
;下弧宽度()
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NOTIFY
afan
发表于 2019-9-22 21:28:01
chzj589 发表于 2019-9-22 19:43
A版,请问GUIRegisterMsg 注册 $WM_NOTIFY 消息,如何消息中处理?
我这样处理,拖动一个时,其它都会闪 ...
这里看不出问题。就像上面所说,闪烁一般是绘图造成的。如果把绘图部分注释掉,仍然闪烁,那还好看出问题。光这里看不出,无可测试的代码,也重现不了问题。
chzj589
发表于 2019-9-22 21:30:47
afan 发表于 2019-9-22 21:28
这里看不出问题。就像上面所说,闪烁一般是绘图造成的。如果把绘图部分注释掉,仍然闪烁,那还好看出问题 ...
也就是说注册$WM_NOTIFY 消息,这样处理可行?
afan
发表于 2019-9-22 21:32:11
chzj589 发表于 2019-9-22 21:30
也就是说注册$WM_NOTIFY 消息,这样处理可行?
可行。虽说代码不全,看上去没问题
chzj589
发表于 2019-9-22 21:43:16
afan 发表于 2019-9-22 21:32
可行。虽说代码不全,看上去没问题
单五星缩放代码,单上弧宽度代码,单下弧宽度代码都不会闪烁。
问题是三个代码没一起放的话,就缺少没放的图。
afan
发表于 2019-9-22 21:48:15
chzj589 发表于 2019-9-22 21:43
单五星缩放代码,单上弧宽度代码,单下弧宽度代码都不会闪烁。
问题是三个代码没一起放的话,就缺少没放 ...
那就肯定不是这里的问题了。
你的问题还是绘图更新到控件的问题,因为你可能更新一次需要设置到控件3次,这样肯定闪烁。
搜索双缓冲,研究下
chzj589
发表于 2019-9-22 21:54:10
afan 发表于 2019-9-22 21:48
那就肯定不是这里的问题了。
你的问题还是绘图更新到控件的问题,因为你可能更新一次需要设置到控件3次 ...
谢谢!这样就有头绪了
页:
1
2
3
4
5
6
7
[8]
9
10
11
12
13
14