musicstashall
Знающий
- Сообщения
- 322
- Репутация
- 7
Хочу создать свою кнопку а-ля виндовую, набросал графику, всё прекрасно.
1. Не знаю как присвоить (создать) созданной кнопке идентификатор.
2. Как использовать GUICtrlOnHover.au3 и передавать элементу параметры графики при наведении курсора?
1. Не знаю как присвоить (создать) созданной кнопке идентификатор.
2. Как использовать GUICtrlOnHover.au3 и передавать элементу параметры графики при наведении курсора?
Код:
#Include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WinAPI.au3>
#include <GDIPlus.au3>
#include <WinAPIGdi.au3>
#include "GUICtrlOnHover.au3"
#include <GUIConstants.au3>
Global $iColorAero = '0x' & StringReplace(Hex(_WinAPI_DwmGetColorizationColor()), '00000000', '')
Global $ColorFont = _WinAPI_GetSysColor($COLOR_WINDOW)
Global $gui, $x, $y, $w, $h, $Color1, $Color2
$gui0 = GUICreate("", 200, 150, 300, 300)
$lab2 = GUICtrlCreateLabel('Текущий цвет Аэро', 23, 80, 70, 30, $SS_CENTER)
GUISetBkColor($ColorFont, $gui0)
GUISetState()
ButtomActive($gui0, 21, 4)
While 1
If WinExists($gui0) Then
If $iColorAero <> '0x' & StringReplace(Hex(_WinAPI_DwmGetColorizationColor()), '00000000', '') Then
ConsoleWrite("Изменился цвет аэро" & @CR)
$iColorAero = '0x' & StringReplace(Hex(_WinAPI_DwmGetColorizationColor()), '00000000', '')
ButtomActive($gui0, 21, 4)
EndIf
Else
ExitLoop
EndIf
Sleep(10)
WEnd
Func ButtomActive($gui, $x, $y)
$lab1 = GUICtrlCreateLabel('', $x, $y, 72, 72) ;здесь нужно создать идентификатор, в данном случае служит стандартный контрол Label
_GUICtrl_OnHoverRegister(-1, "_Hover_Event", "_Primary_Event", $gui, $x, $y)
Graphic($gui, $x + 8, $y + 8, 56, 56, 0xFF879289, 0xFF879289); второй слой графики кнопки
Graphic($gui, $y + 9, $y + 9, 54, 54, 0xFFFFFFFF, 0xFFFFFFFF); третий слой графики
Graphic($gui, $y + 10, $y + 10, 52, 52, 0xFFFFFFFF, $iColorAero) ;четвертый слой
EndFunc
Func _Hover_Event($iCtrlID) ;сюда нужно передать значения переменных $gui, $x, $y
Graphic($gui, $x, $y, 72, 72, 0xFFE5F3FF, 0xFFE5F3FF); первый слой графики кнопки, при наведении курсора, появляется в левом верхнем углу экрана, т.к не заданы координаты, и гаснет, т.к создается вне окна
EndFunc
Func _Primary_Event($iCtrlID, $iParam)
EndFunc
Func Graphic($gui, $x, $y, $w, $h, $Color1, $Color2) ; шаблон кисти для рисования квадратиков
Local $hGraphic, $hBrush, $tRECTF, $fAngle
_GDIPlus_Startup()
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($GUI)
$fAngle = 45
$tRECTF = _GDIPlus_RectFCreate($x, $y, $w, $h)
$hBrush = _GDIPlus_LineBrushCreateFromRectWithAngle($tRECTF, $Color1, $Color2, $fAngle, False)
_GDIPlus_LineBrushSetSigmaBlend($hBrush, 1)
_GDIPlus_GraphicsFillRect($hGraphic, $x, $y, $w, $h, $hBrush)
_GDIPlus_BrushDispose($hBrush)
EndFunc