Opened 12 years ago

Closed 12 years ago

#739 closed Bug (Works For Me)

_GUICtrlTreeView_SetInsertMark with $hItem=0 does not remove the insertion mark

Reported by: j0linus Owned by: Gary
Milestone: Component: Standard UDFs
Version: Severity: None
Keywords: GuiTreeView.au3 Cc:


Instead of removing the insertion mark, it is set above/below the first TreeviewItem.

i think reason for this:

If Not IsHWnd($hItem) Then $hItem = _GUICtrlTreeView_GetItemHandle($hWnd, $hItem)

so resolution would be:

If Not IsHWnd($hItem) AND $hItem<>0 Then $hItem = _GUICtrlTreeView_GetItemHandle($hWnd, $hItem)

By the way i noticed that the check for a valid Treeview handle should be done before the check for a valid TreeItem handle.


If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
If Not IsHWnd($hItem) AND $hItem<>0 Then $hItem = _GUICtrlTreeView_GetItemHandle($hWnd, $hItem)

Attachments (0)

Change History (1)

comment:1 Changed 12 years ago by Gary

  • Resolution set to Works For Me
  • Status changed from new to closed

Works for me:

#AutoIt3Wrapper_au3check_parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
#include <GuiConstantsEx.au3>
#include <GuiTreeView.au3>
#include <GuiImageList.au3>
#include <WindowsConstants.au3>

Opt('MustDeclareVars', 1)

$Debug_TV = False ; Check ClassName being passed to functions, set to True and use a handle to another control to see it work

Global $hImage, $hStateImage


Func _Main()

	Local $hItem[10], $hChildItem[30], $iYItem = 0, $iRand, $hTreeView

	GUICreate("TreeView Set Insert Mark", 400, 300)

	$hTreeView = GUICtrlCreateTreeView(2, 2, 396, 268, $iStyle, $WS_EX_CLIENTEDGE)
	_GUICtrlTreeView_SetUnicodeFormat($hTreeView, False)

	_GUICtrlTreeView_SetNormalImageList($hTreeView, $hImage)

	_GUICtrlTreeView_SetStateImageList($hTreeView, $hStateImage)

	For $x = 0 To 9
		$hItem[$x] = _GUICtrlTreeView_Add($hTreeView, 0, StringFormat("[%02d] New Item", $x), 4, 5)
		_GUICtrlTreeView_SetStateImageIndex($hTreeView, $hItem[$x], 1)
		For $y = 1 To 3
			$hChildItem[$iYItem] = _GUICtrlTreeView_AddChild($hTreeView, $hItem[$x], StringFormat("[%02d] New Child", $y), 0, 3)
			_GUICtrlTreeView_SetStateImageIndex($hTreeView, $hChildItem[$iYItem], 1)
			$iYItem += 1

	$iRand = Random(0, 9, 1)
	MsgBox(4160, "Information", StringFormat("Set Insert Mark at Item Index[%d]: %s", $iRand, _GUICtrlTreeView_SetInsertMark($hTreeView, $hItem[$iRand])))
	MsgBox(4160, "Information", StringFormat("Set Insert Mark at Item 0: %s", _GUICtrlTreeView_SetInsertMark($hTreeView, 0)))

	; Loop until user exits
EndFunc   ;==>_Main

Func _CreateNormalImageList()
	$hImage = _GUIImageList_Create(16, 16, 5, 3)
	_GUIImageList_AddIcon($hImage, "shell32.dll", 110)
	_GUIImageList_AddIcon($hImage, "shell32.dll", 131)
	_GUIImageList_AddIcon($hImage, "shell32.dll", 165)
	_GUIImageList_AddIcon($hImage, "shell32.dll", 168)
	_GUIImageList_AddIcon($hImage, "shell32.dll", 137)
	_GUIImageList_AddIcon($hImage, "shell32.dll", 146)
EndFunc   ;==>_CreateNormalImageList

Func _CreateStateImageList()
	$hStateImage = _GUIImageList_Create(16, 16, 5, 3)
	_GUIImageList_AddIcon($hStateImage, "shell32.dll", 3)
	_GUIImageList_AddIcon($hStateImage, "shell32.dll", 4)
EndFunc   ;==>_CreateStateImageList

Guidelines for posting comments:

  • You cannot re-open a ticket but you may still leave a comment if you have additional information to add.
  • In-depth discussions should take place on the forum.

For more information see the full version of the ticket guidelines here.

Add Comment

Modify Ticket

as closed The owner will remain Gary.

E-mail address and user name can be saved in the Preferences.

Note: See TracTickets for help on using tickets.