找回密码
 加入
搜索
查看: 4091|回复: 4

[AU3基础] 不使用 GUIRegisterMsg 怎么判定 LISTVIEW 的单击事件的产生与消失

[复制链接]
发表于 2015-2-28 23:32:40 | 显示全部楼层 |阅读模式
本帖最后由 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 的单击事件的产生与消失??
请高手说明~~~
发表于 2015-3-1 15:57:58 | 显示全部楼层
GUICtrlRead($listview)读出来的是什么,看看就知道为什么了,你最近总是问些莫名其妙的问题

评分

参与人数 1金钱 +1 收起 理由
afan + 1 我很赞同

查看全部评分

发表于 2015-3-1 16:01:21 | 显示全部楼层
Listview 项目的一些状态能返回 $GUI_CHECKED 和 $GUI_UNCHECKED ,(仅在 listview 控件有 LVS_EX_CHECKBOXES-扩展样式与使用高级模式时) . 因此可以使用 BitAnd(GUICtrlRead($Item),$GUI_CHECKED) 测试项目是否被选中.
帮助里写到了,guictrlread在其他状况下根本不认项目
 楼主| 发表于 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
发表于 2015-3-6 12:37:40 | 显示全部楼层
邦顶
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-16 21:53 , Processed in 0.086824 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表