Jump to content

Confusion using GUICtrlCreateListViewItem, _GUICtrlListView_InsertColumn, and _GUICtrlListView_AddSubItem

Recommended Posts

Previous reply

In the URL above, JLogan3013 posted some code to create a listview. This has been quite helpful.

I've been trying to add a second column into the ListView, so that I can provide a mechanism for the user to paste in a path, for each of the items in the first column.

See the attached screenshot of what I'm trying to do- using AutoIt.


Column0 is contains a list of Windows found by WinList()

Column1 will contain a path- that the user provides.


I've been going back and forth between _GUICtrlListView_AddSubItem(), _GUICtrlListView_InsertColumn, and _GUICtrlListView_AddSubItem(),

trying to get a second column, but it's not going well. The examples I've been reading in the AutoIt help file for those APIs (and others)  did not

do what I was expecting.


My code is now a mess of comments, but it started as a working a example from JLogan3013.

Which function should I use to add the second column?


Func ShowListView($WindowList)

    Const $Centered = -1

    Local $aList, $hGUI
    Local $HWinSize = 900
    Local $VWinSize = 600
    Local $ListboxColWidth
    Local $i
    Local $WindowCount

    If IsArray($WindowList) Then

        $hGUI = GUICreate("Window Instances", 900, 300, $Centered, $Centered)
        $ListboxColWidth = $HWinSize - 20

        $hListView = GUICtrlCreateListView("", 10, 10, $ListboxColWidth, 200)
        _GUICtrlListView_SetColumnWidth($hListView, 1, $ListboxColWidth)
        ;_GUICtrlListView_InsertColumn($hListView, 2, "Column 1", 100)

        $btnDone = GUICtrlCreateButton("DONE", ($HWinSize / 2) - 20, 235, 55, 45)
        $WindowCount = $WindowList[0][0]

        GUICtrlCreateListViewItem($WindowList[1][0], $hListView)
        For $i = 1 To $WindowCount
            ;GUICtrlCreateListViewItem($hListView, $WindowList[$i][0],)
            _GUICtrlListView_AddItem($hListView, $WindowList[$i][0], $i)
            ;_GUICtrlListView_AddItem($idListview, "Row 1: Col 1", 0)
            ;_GUICtrlListView_AddSubItem($hListView, 0, "Z:\NetworkPath\Hawk5\KVM1", $i)

        If ($WindowCount > 1) Then


        GUIRegisterMsg($WM_NOTIFY, "_WM_NOTIFY")

        While 1
            $aTemp = _GUICtrlListView_GetItemTextArray($hListView)
            Switch GUIGetMsg()

                Case $GUI_EVENT_CLOSE
                Case $btnDone
                    If ($aTemp[0] = 0) Then
                        MsgBox($MB_OK, "", "Please select a window first")
                        MsgBox($MB_OK, "", "You selected " & $aTemp[1])


        MsgBox($MB_ICONWARNING, "IsArray()", "LIST VIEW is not an array")
EndFunc   ;==>ShowListView

Func _WM_NOTIFY($nWnd, $iMsg = "", $wParam = "", $lParam = "")
    Local $tStruct = DllStructCreate("hwnd;uint_ptr;int_ptr;int;int", $lParam)
    If BitAND(DllStructGetData($tStruct, 3), 0xFFFFFFFF) = $NM_CLICK Then ; Code
        $hCurrListView = DllStructGetData($tStruct, 1) ; ListView handle
EndFunc   ;==>_WM_NOTIFY




Edited by cappy2112
Link to post
Share on other sites


Example of adding and populating two columns to a listview.

#include <array.au3>
#include <GuiListView.au3>
#include <WinAPIProc.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>

local $aWinlist = winlist()


local $gui010 = guicreate('Windows / Paths', 600, 400)
local $lv010 = guictrlcreatelistview('',10,10,580,380)

_GUICtrlListView_AddColumn($lv010, "Window Title", 250)
_GUICtrlListView_AddColumn($lv010, "Path to Program", 300)

for $i = 1 to $aWinlist[0][0]
    if $aWinlist[$i][0] <> '' And BitAND(WinGetState($aWinlist[$i][1]), 2) then GUICtrlCreateListViewItem($aWinlist[$i][0] & '|' & _WinAPI_GetProcessFileName(wingetprocess($aWinlist[$i][1])), $lv010)


Local $msg
While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE


You will get better help if you give us as much detail as possible.

Forum Rules         Procedure for posting code

"I like pigs.  Dogs look up to us.  Cats look down on us.  Pigs treat us as equals."

- Sir Winston Churchill

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Create New...