|
本帖最后由 koflion 于 2012-4-6 22:20 编辑
目的:在input中输入字符后,显示listview2,但是Listview1和2重叠的地方响应的是Listview1的事件,2没反应,不能选择也不能拉动,使用_WinAPI_SetWindowPos置顶也无效,不知道哪里做错了,望指教。
另。。本来if $ZT=-1 想用读取控件状态,如果是隐藏就显示出来,但GUICtrlRead 无法满足这个要求,不知道是不是我没找对。。额。。
望各位赐教,不胜感激!!!
处理办法:
1、使用GUICtrlSetState($ListView1, $GUI_DISABLE) 设置禁用,2控件能正常使用了。感谢:xiehuahere
2、ListView、TAB 之类的最好考虑用子窗口的形式叠加 感谢a大。。。都帮小弟好多次了。。。
附测试代码#include <Array.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <Constants.au3>
#include <WinAPI.au3>
#include <ListViewConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Include <GuiListView.au3>
Opt("GUIOnEventMode", 1)
Opt("GUICoordMode", 1)
Global $ZT=-1
$Form = GUICreate("ListView重叠控件响应测试", 276, 272, 194, 137)
GUISetOnEvent($GUI_EVENT_CLOSE, "_CLOSE")
$Label = GUICtrlCreateLabel("搜 索", 65, 9, 68, 20)
GUICtrlSetFont(-1, 12, 400, 0, "宋体")
$Input = GUICtrlCreateInput("", 130, 6, 97, 21)
$H = GUICtrlGetHandle($Input)
GUIRegisterMsg($WM_COMMAND, 'WM_COMMAND')
$ListView1 = GUICtrlCreateListView("", 9, 63, 257, 200)
$ListView2 = GUICtrlCreateListView("A|B", 36, 31, 203, 135)
Dim $Array[16][2]
For $i=0 To 15
$Array[$i][0]=$I
$Array[$i][1]=$I+6
Next
_GUICtrlListView_AddArray($ListView2, $Array)
GUICtrlSetState ($ListView2,$GUI_HIDE)
GUISetState(@SW_SHOW)
Func _CLOSE()
Switch @GUI_CtrlId
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
EndFunc ;==>_ZYLOG
Func WM_COMMAND($hWnd, $msg, $wParam, $lParam)
Local $iCode = BitShift($wParam, 16) ; get the high word
Switch $lParam
Case $H
Switch $iCode
Case $EN_CHANGE
If $ZT=-1 Then
GUICtrlSetState ($ListView2,$GUI_SHOW)
_WinAPI_SetWindowPos($ListView2, $HWND_TOP, 36, 31, 203, 135, $SWP_SHOWWINDOW )
$ZT=0
EndIf
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_COMMAND
While 1
WEnd
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?加入
×
|