ListView中右键菜单问题
$ListView1 = GUICtrlCreateListView("计算机|IP地址|MAC地址", 2, 96, 585, 465)$menu1 = GUICtrlCreateContextMenu($ListView1)
$menu_01 = GUICtrlCreateMenuItem("删除", $menu1)
用以上方法可以在ListView上建立右键菜单
但ListView用_GUICtrlListView_Create()建立的话,为什么用上面的方法不能建立右键菜单?
是因为1个是用户自定义函数,另1个不是?
如果是这样,那有没有建立右键菜单的用户自定义函数?(找了好几圈,都没找到哇)
[ 本帖最后由 zeebit 于 2008-5-12 09:10 编辑 ] GUICtrlCreateListView是很早AU3就内置的一个函数。
_GUICtrlListView_Create()是后来内置在头文件中的一个函数。是调用API写成的。
至于二者之间的区别,不是很清楚。不过习惯是用GUICtrlCreateListView来创建。
右键菜单的话GUICtrlCreateContextMenu是不支持_GUICtrlListView_Create的。
但是不建议用_GUICtrlListView_Create。当然非要用。可以考虑下_开头的函数。
如:
_GUICtrlMenu_CreatePopup() 当捕捉到右键单击时,触发菜单,我是这样做的,
见我的QQ登录器 原帖由 sanhen 于 2008-5-10 15:47 发表 http://www.autoitx.com/images/common/back.gif
GUICtrlCreateListView是很早AU3就内置的一个函数。
_GUICtrlListView_Create()是后来内置在头文件中的一个函数。是调用API写成的。
至于二者之间的区别,不是很清楚。不过习惯是用GUICtrlCreateListView来创建。 ...
谢谢三恨,
本来我是用GUICtrlCreateListView,后来好像是想清空Listview中的所有项目时,只找到_GUICtrlListView_DeleteAllItems,所以换成了_GUICtrlListView_Create
原帖由 pcbar 于 2008-5-10 20:13 发表 http://www.autoitx.com/images/common/back.gif
当捕捉到右键单击时,触发菜单,我是这样做的,
见我的QQ登录器
谢谢版主,我来学习一下你的程序 这个给你参考参考。
#include <GUIConstants.au3>
;~ #include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>
#Include <GuiRebar.au3>
#include <GuiToolBar.au3>
#include <GuiListView.au3>
#include <GuiImageList.au3>
#include <GuiMenu.au3>
#Include <GuiStatusBar.au3>
#include <Constants.au3>
Global $idMenuInsert = 1000
$Gui = GUICreate("测试", 320, 200)
$hListView = _GUICtrlListView_Create($GUI, "连接数(0)", 10, 10, 300, 180, -1, $WS_EX_CLIENTEDGE)
_GUICtrlListView_SetExtendedListViewStyle($hListView, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT))
_GUICtrlListView_SetColumnWidth($hListView, 0, 295)
$hMenu = _GUICtrlMenu_CreatePopup()
_GUICtrlMenu_InsertMenuItem($hMenu, 0, "添加连接", $idMenuInsert)
GUISetState()
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
ExitLoop
EndSwitch
WEnd
Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
Local $hWndFrom, $iCode, $tNMHDR, $hWndListView, $iItemCount
$hWndListView = $hListView
If Not IsHWnd($hListView) Then $hWndListView = GUICtrlGetHandle($hListView)
$tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
$iCode = DllStructGetData($tNMHDR, "Code")
Switch $hWndFrom
Case $hWndListView
Switch $iCode
Case $NM_RCLICK
If _GUICtrlMenu_TrackPopupMenu($hMenu, $hListView, -1, -1, 1, 1, 2) = $idMenuInsert Then
_GUICtrlListView_InsertItem($hListView, "www.autoitx.com")
$iItemCount = _GUICtrlListView_GetItemCount($hListView)
_GuiCtrlListView_SetColumn($hListView, 0, "连接数(" & $iItemCount & ")")
EndIf
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc 难道_GUICtrlListView_DeleteAllItems($ListView1)不能清空GUICtrlCreateListView创建的$ListView1吗!!! 原帖由 ken0137 于 2008-5-11 12:49 发表 http://www.autoitx.com/images/common/back.gif
难道_GUICtrlListView_DeleteAllItems($ListView1)不能清空GUICtrlCreateListView创建的$ListView1吗!!!
是啊,提示好像是_GUICtrlListView_DeleteAllItems不能删除非UDF建立的Listview
回复 6# ken0137 的帖子
可以的。一直用这个。从来没试过清除不了的。如果不行,请尝试这样:
_GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($Processlistview)) 谢谢三恨,我再试试 :face (23): 谢谢了 我也不小心学习了 学习了,楼主 很好的资料~ 很不错的文章学习了 $hListview1 = GUICtrlCreateListView
$hListview=GUICtrlGetHandle($hListview1)是等于_GUICtrlListView_Create创建的句柄的·
页:
[1]
2