Что нового

как получить заданный цвет через GUICtrlSetBkColor ()

running-frag

why me?
Сообщения
441
Репутация
60
т.к. при обьявлении GUI мы задаём руками это ясно, а в процессе выполнения скрипта хочется что то типо "если цвет красный - меняем на зелёный", но я никак не соображу как получиться текущий цвет бэкграунда (на хэндле)

ps: ищу изящное решение, без учавствия "за кадровых" переменных
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
Re: как получить заданный цвет через GUISetBkColor ()

Код:
#include <WinAPIEx.au3>

$GUI = GUICreate('')
GUISetBkColor(0x0)
GUISetState()

MsgBox(0, '', GuiGetBKColor($GUI))

Func GuiGetBKColor($iGUI)
	$hWnd = WinGetHandle($iGUI)
	$hDC = _WinAPI_GetDC($hWnd)
	$bGetBkColor = _WinAPI_GetPixel($hDC, 0, 0)
	_WinAPI_ReleaseDC($hWnd, $hDC)
	Return '0x' & Hex($bGetBkColor, 6)
EndFunc
 
Автор
R

running-frag

why me?
Сообщения
441
Репутация
60
Re: как получить заданный цвет через GUISetBkColor ()

а для лэйбла это будет как выглядить? :(

зы: я ошибку сделал в заголовке, нужно для GuiCtrlSetBkColor ()
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
Код:
#include <WinAPIEx.au3>

GUICreate('')
$Label1 = GUICtrlCreateLabel('Hello', 10, 10)
GUICtrlSetBkColor(-1, 0xFF0000)
GUISetState()

MsgBox(0, '', GuiCtrlGetBkColor($Label1))

Func GUICtrlGetBkColor($iControlID)
    Local $bGetBkColor, $hDC, $hHandle
    $hHandle = GUICtrlGetHandle($iControlID)
    $hDC = _WinAPI_GetDC($hHandle)
    $bGetBkColor = _WinAPI_GetPixel($hDC, 0, 0)
    _WinAPI_ReleaseDC($hHandle, $hDC)
    Return '0x' & Hex($bGetBkColor, 6)
EndFunc
 
Верх