找回密码
 加入
搜索
查看: 4495|回复: 8

[AU3基础] 如何双击替换 GUICtrlCreateListView 内某一项目的图片![已解决]

  [复制链接]
发表于 2013-3-19 17:32:35 | 显示全部楼层 |阅读模式
本帖最后由 病毒专收员 于 2013-3-20 15:06 编辑
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
#include <GuiImageList.au3>

$Form2 = GUICreate("窗体1", 1001, 674, 14, 32)
$Group1 = GUICtrlCreateGroup("", -1, 8, 1001, 449)
$ListView1 = GUICtrlCreateListView("", 3, 18, 993, 435)
GUICtrlSetStyle($ListView1, $LVS_ICON)
$Group2 = GUICtrlCreateGroup("操作日志", 0, 456, 1000, 217)
$ListView2 = GUICtrlCreateListView("", 3, 472, 993, 198)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
_load1()
;~ Sleep(2000)
;~ _load2()



While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit

        EndSwitch
WEnd

Func _Load1()
        Local $hImage, $var, $i, $path, $error, $hFile, $path1, $path2
        For $i = 1 To 10 Step 1
        $hImage = _GUIImageList_Create(32, 32, 5, 1)
                                _GUIImageList_AddBitmap($hImage, @ScriptDir & "\闲.bmp")
                                _GUICtrlListView_SetImageList($listview1, $hImage, 0)
                                _GUICtrlListView_AddItem($listview1, "test"&$i, 0)
        Next
EndFunc   ;==>_Load
;~         
Func _Load2()
        
EndFunc   ;==>_Load
        
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 $ListView1
 
            Switch $Event; 选择产生的事件
                
                Case $NM_CLICK ; 左击
;~                     ...
                    
                Case $NM_DBLCLK ; 双击
                    $Index = _GUICtrlListView_GetSelectedIndices($ListView1)
                    If Not StringLen($Index) Then; 这里用以判断是否选定了ListViewItem
                        MsgBox(0, "", "未选定")
                        Return
                    EndIf

                    MsgBox(0,0, _GUICtrlListView_GetItemText($ListView1, Number($Index), 0))

                Case $NM_RCLICK ; 右击
                           MsgBox(0,0,"点了右键")

            EndSwitch
            
    EndSwitch
    
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY


用的图片是 32*32的,bmp格式的。

求解······

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2013-3-19 18:28:26 | 显示全部楼层
#Include <GuiListView.au3>
_GUICtrlListView_SetItemImage($hWnd, $iIndex, $iImage[, $iSubItem = 0])
发表于 2013-3-20 08:26:30 | 显示全部楼层
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
#include <GuiImageList.au3>

$Form2 = GUICreate("窗体1", 1001, 674, 14, 32)
$Group1 = GUICtrlCreateGroup("", -1, 8, 1001, 449)
$ListView1 = GUICtrlCreateListView("", 3, 18, 993, 435)
GUICtrlSetStyle($ListView1, $LVS_ICON)
$Group2 = GUICtrlCreateGroup("操作日志", 0, 456, 1000, 217)
$ListView2 = GUICtrlCreateListView("", 3, 472, 993, 198)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
_load1()
;~ Sleep(2000)
;~ _load2()



While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit

        EndSwitch
WEnd

Func _Load1()
        Local $hImage, $var, $i, $path, $error, $hFile, $path1, $path2
        For $i = 1 To 10 Step 1
                $hImage = _GUIImageList_Create(32, 32, 5, 1)
                _GUIImageList_AddBitmap($hImage, @ScriptDir & "\闲.bmp")
                _GUIImageList_AddBitmap($hImage, @ScriptDir & "\忙.bmp")
                _GUICtrlListView_SetImageList($ListView1, $hImage, 0)
                _GUICtrlListView_AddItem($ListView1, $i, 0)
        Next
EndFunc   ;==>_Load1
;~
Func _Load2()

EndFunc   ;==>_Load2

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 $ListView1
                        Switch $Event; 选择产生的事件
                                Case $NM_CLICK ; 左击;~                     ...

                                Case $NM_DBLCLK ; 双击
                                        $Index = _GUICtrlListView_GetSelectedIndices($ListView1)
                                        If _GUICtrlListView_GetItemImage($ListView1, Number($Index)) Then
                                                _GUICtrlListView_SetItemImage($ListView1, Number($Index), 0)
                                        Else
                                                _GUICtrlListView_SetItemImage($ListView1, Number($Index), 1)
                                        EndIf
                                        
                                Case $NM_RCLICK ; 右击
                                        MsgBox(0, 0, "点了右键")
                        EndSwitch
        EndSwitch
        Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY
发表于 2013-3-20 10:28:50 | 显示全部楼层
haijie1223 发表于 2013-3-20 08:26



    32-41行循环部分多了点~
Func _Load1()
        Local $hImage = _GUIImageList_Create(32, 32, 5, 3)
        _GUIImageList_AddBitmap($hImage, @ScriptDir & '\闲.bmp')
        _GUIImageList_AddBitmap($hImage, @ScriptDir & '\忙.bmp')
        _GUICtrlListView_SetImageList($ListView1, $hImage)
        For $i = 1 To 10 Step 1
                _GUICtrlListView_AddItem($ListView1, 'test' & $i, 0)
        Next
EndFunc   ;==>_Load1
发表于 2013-3-20 12:58:52 | 显示全部楼层
回复 4# afan


    哦 没注意看~
 楼主| 发表于 2013-3-20 15:04:34 | 显示全部楼层
感谢感谢,问题解决了~·
发表于 2013-3-23 11:49:36 | 显示全部楼层
例子比较生动~~~~
发表于 2013-3-24 00:26:55 | 显示全部楼层
感谢分享! 学习了~~
发表于 2013-3-25 16:20:19 | 显示全部楼层
学习学习,新手报到
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-17 23:43 , Processed in 0.083707 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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