_GUIImageList_ReplaceIcon
Заменяет изображение иконки или курсора
#include <GuiImageList.au3>
_GUIImageList_ReplaceIcon($hWnd, $iIndex, $hIcon)
Параметры
$hWnd | Дескриптор ImageList |
$iIndex |
Индекс заменяемого изображения. Если -1, то функция добавляет изображение в конце списка. |
$hIcon |
Дескриптор иконки или курсора, который содержит растровое изображение и маску для нового изображения |
Возвращаемое значение
Успех: | Возвращает индекс изображения |
Ошибка: | Возвращает -1 |
Примечания
Поскольку система не сохраняет hIcon вы можете уничтожить её после возвращения из функции, если иконка или курсор были созданы функцией CreateIcon. Нет необходимости уничтожать hIcon, если она была загружена функцией LoadIcon, система автоматически освобождает ресурс, когда иконка больше не нужна.Пример
#include <GUIConstantsEx.au3>
#include <WinAPI.au3>
#include <GuiListView.au3>
#include <GuiImageList.au3>
#include <WindowsConstants.au3>
_Main()
Func _Main()
Local $listview, $hImage
Local $Wow64 = ""
If @AutoItX64 Then $Wow64 = "\Wow6432Node"
Local $AutoItDir = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE" & $Wow64 & "\AutoIt v3\AutoIt", "InstallDir")
GUICreate("Заменяет изображение", 410, 300)
$listview = GUICtrlCreateListView("", 2, 2, 404, 268, BitOR($LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER, $LVS_REPORT))
GUISetState()
; Создаёт список изображений
$hImage = _GUIImageList_Create(11, 11)
AddIcon($hImage, $AutoItDir & "\Icons\au3script_v9.ico")
AddIcon($hImage, $AutoItDir & "\Icons\au3script_v10.ico")
AddIcon($hImage, $AutoItDir & "\Icons\filetype-blank.ico")
_GUICtrlListView_SetImageList($listview, $hImage, 1)
; Добавляет колонки с иконками в заголовках
_GUICtrlListView_AddColumn($listview, "Колонка 1", 100, 0, 0)
_GUICtrlListView_AddColumn($listview, "Колонка 2", 100, 1, 1)
_GUICtrlListView_AddColumn($listview, "Колонка 3", 100, 2, 2)
_GUICtrlListView_AddColumn($listview, "Колонка 4", 100)
; Цикл выполняется, пока окно не будет закрыто
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
GUIDelete()
EndFunc ;==>_Main
; Это долгий способ добавления значка. Вместо этого используйте _GUIImageList_AddIcon
Func AddIcon($hWnd, $sFile, $iIndex = 0)
Local $pIcon, $tIcon, $hIcon
$tIcon = DllStructCreate("int Icon")
$pIcon = DllStructGetPtr($tIcon)
_WinAPI_ExtractIconEx($sFile, $iIndex, 0, $pIcon, 1) ; извлекает иконку из файла
$hIcon = DllStructGetData($tIcon, "Icon")
_GUIImageList_ReplaceIcon($hWnd, -1, $hIcon) ; -1 означает добавление иконки в конец списка, вместо замены
_WinAPI_DestroyIcon($hIcon)
EndFunc ;==>AddIcon