找回密码
 加入
搜索
查看: 1848|回复: 3

[GUI管理] [已解决]求助鼠标单机treeviewitem的问题

[复制链接]
发表于 2012-6-17 11:19:42 | 显示全部楼层 |阅读模式
本帖最后由 kxing 于 2012-6-17 12:16 编辑

请问下各位如何能获取鼠标单机的项目文本呢?
目前使用以下方法很不准确,因为单机时焦点还没跳转到该item上。
需要点第二次才能获取到正确的项目文本。而双击则正常。
感谢高手们回答!!!!
#include <GUIConstantsEx.au3>
#include <StructureConstants.au3>
#include <WindowsConstants.au3>
#include <TreeViewConstants.au3>
#Include <GuiTreeView.au3>

$hForm=guicreate("treeview",200,200)
$hTree=guictrlcreatetreeview("",0,0,200,200)
guisetstate()
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
for $i=1 to 10
guictrlcreatetreeviewitem("item "&$i,$hTree)
next

while 1
switch guigetmsg()
case -3
exit
endswitch
wend


Func WM_NOTIFY($hWndGUI, $MsgID, $WParam, $LParam)
Local $tagNMHDR, $Event, $hWndFrom, $IDFrom
Local $tagNMHDR = DllStructCreate("int;int;int", $LParam)
If @error Then Return $GUI_RUNDEFMSG
$IDFrom = DllStructGetData($tagNMHDR, 2)
$Event = DllStructGetData($tagNMHDR, 3)
$tagNMHDR = 0
Switch $IDFrom;选择产生事件的控件
Case $hTree
Switch $Event; 选择产生的事件
Case $NM_CLICK ; 左击
$itemtext=_guictrltreeview_gettext($hTree,guictrlread($hTree))
msgbox(0,'你选择了',$itemtext)
;Case $NM_DBLCLK ; 双击
;Case $NM_RCLICK ; 右击
EndSwitch
EndSwitch 
Return $GUI_RUNDEFMSG
EndFunc  ;==>WM_NOTIFY
发表于 2012-6-17 11:32:41 | 显示全部楼层
修改 Case $NM_CLICK  为
                                Case $TVN_SELCHANGEDW
                                        $ix = GUICtrlRead($hTree)
                                        If $ix > 0 Then MsgBox(0, '你选择了', GUICtrlRead($ix, 1))

评分

参与人数 1金钱 +10 收起 理由
kxing + 10 小小心意

查看全部评分

 楼主| 发表于 2012-6-17 12:14:10 | 显示全部楼层
十分感谢。。。。
 楼主| 发表于 2012-6-17 13:16:50 | 显示全部楼层
为什么光标也能触发事件呢?
在treeview上岸键盘的上下光标也会msg提示的。
我希望只有鼠标能触发该消息,多谢啦。。。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-15 10:36 , Processed in 0.106840 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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