_GUICtrlHeader_CreateDragImage
Создает полупрозрачную версию изображения пункта для использования его в качестве перетаскиваемого изображения
#include <GuiHeader.au3>
_GUICtrlHeader_CreateDragImage($hWnd, $iIndex)
Параметры
$hWnd | Дескриптор элемента |
$iIndex |
Индекс пункта, отсчёт от 0. Изображение, назначенное пункту является основой для прозрачного изображения. |
Возвращаемое значение
Успех: | Возвращает дескриптор списка изображений, содержащий новое изображение как единственный элемент списка |
Ошибка: | Возвращает 0 |
См. также
_GUICtrlHeader_GetImageListПример
#include <GUIConstantsEx.au3>
#include <GuiHeader.au3>
#include <GuiImageList.au3>
#include <WinAPI.au3>
$Debug_HDR = False ; Проверяет ClassName передаваемый в функции. Установите True и используйте дескриптор от другого элемента, чтобы увидеть как это работает
Global $iMemo
_Main()
Func _Main()
Local $hGUI, $hHeader, $hImage, $iMsg, $aSize, $tPos, $tRect, $hDC
; Создаёт GUI
$hGUI = GUICreate(StringTrimRight(@ScriptName, 4), 400, 300)
$hHeader = _GUICtrlHeader_Create ($hGUI)
_GUICtrlHeader_SetUnicodeFormat ($hHeader, True)
$iMemo = GUICtrlCreateEdit("", 2, 32, 396, 266, 0)
GUISetState()
; Добавляет колонки
_GUICtrlHeader_AddItem ($hHeader, "Колонка 1", 100)
_GUICtrlHeader_AddItem ($hHeader, "Колонка 2", 100)
_GUICtrlHeader_AddItem ($hHeader, "Колонка 3", 100)
_GUICtrlHeader_AddItem ($hHeader, "Колонка 4", 100)
; Создаёт перетаскиваемое изображение
$hImage = _GUICtrlHeader_CreateDragImage ($hHeader, 1)
$aSize = _GUIImageList_GetIconSize ($hImage)
$hDC = _WinAPI_GetDC ($hGUI)
MemoWrite("Дескриптор перетаскиваемого изображения: " & "0x" & Hex($hImage) & @CRLF & _
"IsPtr = " & IsPtr($hImage) & @CRLF & _
"IsHWnd = " & IsHWnd($hImage))
; Показывает перетаскиваемое изображение в позиции курсора пока пользователь не завершит
Do
$iMsg = GUIGetMsg()
If $iMsg = $GUI_EVENT_MOUSEMOVE Then
If $tPos <> 0 Then
$tRect = DllStructCreate($tagRECT)
DllStructSetData($tRect, "Left", DllStructGetData($tPos, "X"))
DllStructSetData($tRect, "Top", DllStructGetData($tPos, "Y"))
DllStructSetData($tRect, "Right", DllStructGetData($tPos, "X") + $aSize[0])
DllStructSetData($tRect, "Bottom", DllStructGetData($tPos, "Y") + $aSize[1])
_WinAPI_InvalidateRect ($hGUI, $tRect)
EndIf
$tRect = _WinAPI_GetClientRect ($hGUI)
$tPos = _WinAPI_GetMousePos (True, $hGUI)
If _WinAPI_PtInRect ($tRect, $tPos) Then
_GUIImageList_Draw ($hImage, 0, $hDC, DllStructGetData($tPos, "X"), DllStructGetData($tPos, "Y"))
EndIf
EndIf
Until $iMsg = $GUI_EVENT_CLOSE
EndFunc ;==>_Main
; Записывает строку в элемент для заметок
Func MemoWrite($sMessage)
GUICtrlSetData($iMemo, $sMessage & @CRLF, 1)
EndFunc ;==>MemoWrite