Функция _GUIImageList_ReplaceIcon

 ↑  ←  Описание функции


_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