Что нового

Цвет текста кнопки

Сообщения
75
Репутация
-2
как изменить цвет текста кнопки, чтобы не изменялся ее фон?
Код:
$start = GUICtrlCreateButton ("Rec.",0, 0, 100, 40)
GUICtrlSetFont(-1, 12, 600, 0)
GUICtrlSetColor(-1, $COLOR_RED)
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
Не моё, нашел когда-то на буржуйском форуме, на первый взгляд несколько сложно, но работает :
Код:
#Include <Constants.au3>
#Include <GUIConstantsEx.au3>
#Include <StaticConstants.au3>
#Include <WindowsConstants.au3>
#Include <WinAPI.au3>

$hForm = GUICreate('MyGUI', 350, 63)
$start = GUICtrlCreateButton('',0, 0, 100, 40)
GUICtrlCreateLabel('Rec.', 0, 0, 100, 40, BitOR($SS_CENTER, $SS_CENTERIMAGE))
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetFont(-1, 12, 600, -1, 'Comic Sans MS')
GUICtrlSetColor(-1, 0xFF0000)

$hDll = DllCallbackRegister('_WinProc', 'ptr', 'hwnd;uint;wparam;lparam')
$pDll = DllCallbackGetPtr($hDll)
$hProc = _WinAPI_SetWindowLong(GUICtrlGetHandle($start), $GWL_WNDPROC, $pDll)
GUISetState()
While 1
    $Msg = GUIGetMsg()
    Switch $Msg
        Case -3
            ExitLoop
        Case $start
            MsgBox(0, 'Сообщение', 'Нажата красивая кнопка "Rec"', 0, $hForm)
    EndSwitch
WEnd

_WinAPI_SetWindowLong(GUICtrlGetHandle($start), $GWL_WNDPROC, $hProc)
DllCallbackFree($hDll)

Func _WinProc($hWnd, $iMsg, $wParam, $lParam)
    Switch $iMsg
        Case $WM_PAINT

            Local $tRECT = DllStructCreate($tagRECT)
            Local $Ret = DllCall('user32.dll', 'int', 'GetUpdateRect', 'hwnd', $hWnd, 'ptr', DllStructGetPtr($tRECT), 'int', 1)

            If $Ret[0] Then
                _WinAPI_InvalidateRect(GUICtrlGetHandle(_WinAPI_GetDlgCtrlID($hWnd) + 1), $tRECT)
            EndIf
    EndSwitch
    Return _WinAPI_CallWindowProc($hProc, $hWnd, $iMsg, $wParam, $lParam)
EndFunc   ;==>_WinProc
 
Автор
W
Сообщения
75
Репутация
-2
ra4o сказал(а):
Не моё, нашел когда-то на буржуйском форуме, на первый взгляд несколько сложно, но работает :
Код:
#Include <Constants.au3>
#Include <GUIConstantsEx.au3>
#Include <StaticConstants.au3>
#Include <WindowsConstants.au3>
#Include <WinAPI.au3>

$hForm = GUICreate('MyGUI', 350, 63)
$start = GUICtrlCreateButton('',0, 0, 100, 40)
GUICtrlCreateLabel('Rec.', 0, 0, 100, 40, BitOR($SS_CENTER, $SS_CENTERIMAGE))
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetFont(-1, 12, 600, -1, 'Comic Sans MS')
GUICtrlSetColor(-1, 0xFF0000)

$hDll = DllCallbackRegister('_WinProc', 'ptr', 'hwnd;uint;wparam;lparam')
$pDll = DllCallbackGetPtr($hDll)
$hProc = _WinAPI_SetWindowLong(GUICtrlGetHandle($start), $GWL_WNDPROC, $pDll)
GUISetState()
While 1
    $Msg = GUIGetMsg()
    Switch $Msg
        Case -3
            ExitLoop
        Case $start
            MsgBox(0, 'Сообщение', 'Нажата красивая кнопка "Rec"', 0, $hForm)
    EndSwitch
WEnd

_WinAPI_SetWindowLong(GUICtrlGetHandle($start), $GWL_WNDPROC, $hProc)
DllCallbackFree($hDll)

Func _WinProc($hWnd, $iMsg, $wParam, $lParam)
    Switch $iMsg
        Case $WM_PAINT

            Local $tRECT = DllStructCreate($tagRECT)
            Local $Ret = DllCall('user32.dll', 'int', 'GetUpdateRect', 'hwnd', $hWnd, 'ptr', DllStructGetPtr($tRECT), 'int', 1)

            If $Ret[0] Then
                _WinAPI_InvalidateRect(GUICtrlGetHandle(_WinAPI_GetDlgCtrlID($hWnd) + 1), $tRECT)
            EndIf
    EndSwitch
    Return _WinAPI_CallWindowProc($hProc, $hWnd, $iMsg, $wParam, $lParam)
EndFunc   ;==>_WinProc

я уже думал об этом, но хотелось бы, чтобы изменялся цвет надписи на самой кнопке, а не lable
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
OffTopic:
joiner,отличный пример, только я думал, что в моём примере всё сложно :scratch: , сохранил в копилку !
Что-то не нашел - возможно ли менять размер шрифта...
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Шрифт меняешь как обычно
GuiCtrlSetFont
Потом используешь функцию из примера
 
Верх