不使用 GUIRegisterMsg 怎么判定 LISTVIEW 的单击事件的产生与消失
本帖最后由 kk_lee69 于 2015-3-1 01:45 编辑不使用 GUIRegisterMsg 怎么判定 LISTVIEW 的单击事件的产生与消失
注册 GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") 判定 LISTVIEW 的单击事件 这个我会
想请教高手 如果 不用 GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") 有没有其它写法 可以判定 LISTVIEW 的单击事件的产生与消失??
我写了一段程序 可是 有点怪??
程序如下:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
GUICreate("列表視圖項目", 220, 250, 100, 200, -1, $WS_EX_ACCEPTFILES)
$listview = GUICtrlCreateListView("列1|列2|列3", 10, 10, 200, 150);,$LVS_SORTDESCENDING)
GUICtrlCreateListViewItem ("項目 2|列22|列23", $listview)
GUICtrlCreateListViewItem ("項目 1|列12|列13", $listview)
GUICtrlCreateListViewItem ("項目 3|列32|列33", $listview)
GUISetState()
While 1
Switch guigetmsg()
Case -3
EXIT
Case $listview
MsgBox(0,GUICtrlRead($listview),GUICtrlRead(GUICtrlRead($listview)), 2)
Case GUICtrlRead($listview)
;If GUICtrlRead($listview)>3 Then
MsgBox(0,GUICtrlRead($listview),GUICtrlRead(GUICtrlRead($listview)), 2)
MsgBox(0, $listview, "A", 2)
;EndIf
EndSwitch
WEnd
想请教:
1.为何不加入 If GUICtrlRead($listview)>3 Then这样的话 MSGBOX 就会一直跳出??
2.加入 If GUICtrlRead($listview)>3之后 就是有点中后 才会跳出 但未何出现的是 4 5 或者 6 而不是想象中的 0 1 2
3.一直跳出 MSGBOX 的问题可解决吗 我的方法 好像不是正统的解决方法吧??正确应该怎么写呢??
想请教高手 如果 不用 GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") 有没有其它写法 可以判定 LISTVIEW 的单击事件的产生与消失??
请高手说明~~~ GUICtrlRead($listview)读出来的是什么,看看就知道为什么了,你最近总是问些莫名其妙的问题 Listview 项目的一些状态能返回 $GUI_CHECKED 和 $GUI_UNCHECKED ,(仅在 listview 控件有 LVS_EX_CHECKBOXES-扩展样式与使用高级模式时) . 因此可以使用 BitAnd(GUICtrlRead($Item),$GUI_CHECKED) 测试项目是否被选中.
帮助里写到了,guictrlread在其他状况下根本不认项目 本帖最后由 kk_lee69 于 2015-3-6 10:36 编辑
回复 3# netegg
呵呵 想變化一下就得想些奇奇怪怪的邏輯@@
最後測試只能達到單擊 可以反應 ,但是如果選中的 失去焦點的事件就無法反應了
看來不用 GUIRegisterMsg 還是 無法達到想要的東西
附上 測試的 程式碼
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
GUICreate("列表視圖項目", 220, 250, 100, 200, -1, $WS_EX_ACCEPTFILES)
$listview = GUICtrlCreateListView("列1|列2|列3", 10, 10, 200, 150);,$LVS_SORTDESCENDING)
GUICtrlCreateListViewItem ("項目 2|列22|列23", $listview)
GUICtrlCreateListViewItem ("項目 1|列12|列13", $listview)
GUICtrlCreateListViewItem ("項目 3|列32|列33", $listview)
GUISetState()
While 1
Switch guigetmsg()
Case -3
EXIT
Case $listview
MsgBox(0,GUICtrlRead($listview),GUICtrlRead(GUICtrlRead($listview)), 2)
Case $listview+_GUICtrlListView_GetSelectedIndices($listview)+1
MsgBox(0,"", "選中的索引為"&_GUICtrlListView_GetSelectedIndices($listview))
EndSwitch
WEnd 邦顶{:face (427):}
页:
[1]