kk_lee69 发表于 2015-2-28 23:32:40

不使用 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 的单击事件的产生与消失??
请高手说明~~~

netegg 发表于 2015-3-1 15:57:58

GUICtrlRead($listview)读出来的是什么,看看就知道为什么了,你最近总是问些莫名其妙的问题

netegg 发表于 2015-3-1 16:01:21

Listview 项目的一些状态能返回 $GUI_CHECKED 和 $GUI_UNCHECKED ,(仅在 listview 控件有 LVS_EX_CHECKBOXES-扩展样式与使用高级模式时) . 因此可以使用 BitAnd(GUICtrlRead($Item),$GUI_CHECKED) 测试项目是否被选中.
帮助里写到了,guictrlread在其他状况下根本不认项目

kk_lee69 发表于 2015-3-6 10:33:19

本帖最后由 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

lxwlxwayy 发表于 2015-3-6 12:37:40

邦顶{:face (427):}
页: [1]
查看完整版本: 不使用 GUIRegisterMsg 怎么判定 LISTVIEW 的单击事件的产生与消失