Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Скрипт создания кнопок с картинками, не меняеться цвет надписи(((

Ответить
Настройки темы
Скрипт создания кнопок с картинками, не меняеться цвет надписи(((

Аватара для Centrinar

Старожил


Сообщения: 247
Благодарности: 1

Профиль | Цитировать


Скрипт создания кнопок с картинками, не получается поменять цвет надписи
Код: Выделить весь код
#Include <GuiButton.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiImageList.au3>

$hImagebtn = _GUIImageList_Create(150, 100)
$hH1 = _GUIImageList_AddBitmap($hImagebtn, @ScriptDir & "\img_black.bmp")
$hH2 = _GUIImageList_AddBitmap($hImagebtn, @ScriptDir & "\img_over.bmp")
$hH3 = _GUIImageList_AddBitmap($hImagebtn, @ScriptDir & "\img_white.bmp")


#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 350, 200, 100, 100)
$Button1 = GUICtrlCreateButton("Супер кнопка", 100, 50, 150, 100)
GUICtrlSetFont(-1, 16, 600, 2, 'Times New Roman')
_GUICtrlButton_SetImageList(-1, $hImagebtn, 4)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            GUICtrlSetState($Button1, $GUI_DISABLE)
            Sleep(2000)
            GUICtrlSetState($Button1, $GUI_ENABLE)
            MsgBox(0, '', 'Супер кнопка')
    EndSwitch
WEnd
При использовании GUICtrlSetColor(-1,0xff0000) картинки исчезают.

Отправлено: 13:57, 11-03-2011

 

Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Как вариант:

Код: Выделить весь код
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$hGUI = GUICreate("_GUICtrlCreateButtonEx")
$aButton = _GUICtrlCreateButtonEx("Click Me here", 50, 80, -1, 30, "shell32.dll", 23)
GUICtrlSetColor(-1, 0xff0000)

GUISetState()

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
        Case $aButton[1]
            $iButtonRandomIcon = Random(0, 50, 0)
            GUICtrlSetImage($aButton[0], "shell32.dll", -$iButtonRandomIcon)
    EndSwitch
WEnd

Func _GUICtrlCreateButtonEx($sText, $iLeft, $iTop, $iWidth, $iHeight, $sIconFile="", $nIconIndex=0)
    Local $aRetArr[2]

    $aRetArr[0] = GUICtrlCreateIcon($sIconFile, $nIconIndex, $iLeft + 5, $iTop + (($iHeight - 16) / 2), 16, 16)
    GUICtrlSetState(-1, $GUI_DISABLE)
    ;GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)

    $aRetArr[1] = GUICtrlCreateButton("       " & $sText & " ", $iLeft, $iTop, $iWidth, $iHeight, 0x04000000) ;$WS_CLIPSIBLINGS

    Return $aRetArr
EndFunc
Или так:

Код: Выделить весь код
#Include <Constants.au3>
#Include <GUIConstantsEx.au3>
#Include <StaticConstants.au3>
#Include <WindowsConstants.au3>
#Include <WinAPI.au3>
#include <GUIImageList.au3>
#include <GUIButton.au3>

Global $hLastWndProc
Global $hBtnCtrlWndProc = DllCallbackRegister('__GUICtrlCreateButton_WndProc', 'ptr', 'hwnd;uint;wparam;lparam')
Global $pBtnCtrlWndProc = DllCallbackGetPtr($hBtnCtrlWndProc)

$hImgLst = _GUIImageList_Create(16, 16, 5, BitOr($ILC_MASK, $ILC_COLOR32), 0, 1)
_GUIImageList_AddIcon($hImgLst, "shell32.dll", -6)

$hForm = GUICreate('Set Button Color - _GUICtrlCreateButtonEx', 370, 65)

$aButton = _GUICtrlCreateButtonEx('   Button', 70, 20, 70, 23, 1, BitOR($SS_CENTER, $SS_CENTERIMAGE), -1, 0xFF0000)
_GUICtrlButton_SetImageList($aButton[0], $hImgLst)

GUISetState()

While 1
    $nMsg = GUIGetMsg()

    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            _WinAPI_SetWindowLong($aButton[2], $GWL_WNDPROC, $hLastWndProc)
            DllCallbackFree($hBtnCtrlWndProc)

            Exit
        Case $aButton[0]
            MsgBox(64, 'Message', GUICtrlRead($nMsg+1, 1) & ' is pressed.', 0, $hForm)
    EndSwitch
WEnd

Func _GUICtrlCreateButtonEx($sText, $iLeft, $iTop, $iWidth = -1, $iHeight = -1, $vButton = 1, $nStyle = -1, $nExStyle = -1, $nColor = -1)
    Local $anButton[3]

    If IsString($vButton) Then
        $anButton[0] = Execute("GUICtrlCreate" & $vButton & "('', $iLeft, $iTop, $iWidth, $iHeight)")
    Else
        $anButton[0] = GUICtrlCreateButton('', $iLeft, $iTop, $iWidth, $iHeight)
    EndIf

    $anButton[1] = GUICtrlCreateLabel($sText, $iLeft, $iTop, $iWidth, $iHeight, BitOR($SS_CENTER, $SS_CENTERIMAGE))
    $anButton[2] = GUICtrlGetHandle($anButton[0])
    GUICtrlSetBkColor($anButton[1], $GUI_BKCOLOR_TRANSPARENT)

    GUICtrlSetColor($anButton[1], $nColor)
    $hLastWndProc = _WinAPI_SetWindowLong($anButton[2], $GWL_WNDPROC, $pBtnCtrlWndProc)

    Return $anButton
EndFunc

Func __GUICtrlCreateButton_WndProc($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($hLastWndProc, $hWnd, $iMsg, $wParam, $lParam)
EndFunc

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:28, 11-03-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Centrinar

Старожил


Сообщения: 247
Благодарности: 1

Профиль | Цитировать


А можно тогда еще пример создания кнопки из GUICtrlCreateLabel

Отправлено: 20:41, 11-03-2011 | #3


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата Centrinar:
можно тогда еще пример создания кнопки из GUICtrlCreateLabel »
Зачем?

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 23:17, 11-03-2011 | #4


Аватара для Centrinar

Старожил


Сообщения: 247
Благодарности: 1

Профиль | Цитировать


Для общего развития

Отправлено: 23:35, 11-03-2011 | #5


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата Centrinar:
Для общего развития »
Не вижу тут развития. Label это строка, Button это кнопка. Зачем путать и делать из одного другое?

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 23:55, 11-03-2011 | #6


Аватара для Centrinar

Старожил


Сообщения: 247
Благодарности: 1

Профиль | Цитировать


а как правильно делают кнопки в стиле надписи?

Отправлено: 00:05, 12-03-2011 | #7


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата Centrinar:
как правильно делают кнопки в стиле надписи? »
Это уже не кнопки, а надписи

Если нужно просто создать надпись, и чтобы была реакция при нажатий на неё, то точно также как проверяется нажатие кнопки - проверяется нажатие Label'а (Case $nMsg = $nLabel).

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:15, 12-03-2011 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Скрипт создания кнопок с картинками, не меняеться цвет надписи(((

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Скрипт создания ссылки, для GPO bombording Скриптовые языки администрирования Windows 6 27-09-2012 13:37
Любой язык - Батник (скрипт) для создания odbc ITSpec Скриптовые языки администрирования Windows 2 09-12-2009 10:32
Скрипт для создания пользователей Ven Microsoft Windows NT/2000/2003 6 24-02-2008 23:57
Прочие - Программа для создания кнопок и иконок на сайт Francesco Программное обеспечение Windows 5 21-01-2007 14:26
цвет надписи на кнопке hameg Программирование и базы данных 4 09-03-2004 19:27




 
Переход