Что нового

[Элементы GUI] Замена иконки на текст относительно кнопки

Сообщения
137
Репутация
-2
Незадача у меня такая возникла,даже не знаю как грамотно описать её. Вообщем, есть три кнопки: на первой текст Start, на второй текст Hide, а на третьей - любая иконка из shell32.dll. При нажатии на вторую кнопку Hide, её текст должен измениться на Hidden, а вместо иконки на третьей кнопке должен появиться текст Show. Теперь,при нажатии на третью кнопку Show, её текст пусть изменится на любую иконку из shell32.dll и слово Hi, а текст второй кнопки снова станет Hide. И так каждый раз при нажатии на кнопки. Вообщем, не получается у меня заменить иконку на третьей кнопке на текст. Полистал форум, нашёл шикарный пример с _GUICtrlButton_SetImageList , но, к сожалению, не понял как он работает и тем более как вписать его в свой код.
Вот код:
Код:
#include <WinAPIGdi.au3>
#include <Misc.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <ButtonConstants.au3>

Global $Paused, $hGui, $Button1, $Button2, $Button3, $hWnd, $hControl, $fTrigger = False
Opt("GUIOnEventMode", 1) ; Включает режим OnEvent

$hGui = GUICreate(" ", 50, 93, -1, -1, $WS_POPUPWINDOW)
GUISetBkColor(0x88AABB)

$Button1 = GUICtrlCreateButton("Start", 5, 5, 40, 20)
GUICtrlSetOnEvent(-1, '_Button1')

$Button2 = GUICtrlCreateButton("Hide", 5, 26, 40, 20)
GUICtrlSetOnEvent(-1, '_Button2')

$Button3 = GUICtrlCreateButton("", 5, 47, 40, 20, $BS_ICON )
GUICtrlSetImage(-1, @SystemDir & '\shell32.dll', 42, 0)  
GUICtrlSetOnEvent($Button3, '_Button3')

GUICtrlCreatePic(@ScriptDir & '\msoobe.jpg', 5, 68, 40, 20, -1, $GUI_WS_EX_PARENTDRAG)

GUISetState(@SW_SHOW)


;-------------------------------
Func _Button1() ; основное тело скрипта
	
	 GUICtrlSetData($Button1, 'Run')
			TrayTip("Запуск программы", "Программа работает", 5, 1)
	
EndFunc   ;==>_Button1
;-------------------------------
Func _Button3()

	TrayTip("Return the Window", "Icon change", 5, 1)
		
	GUICtrlSetData($Button2, 'Hide')
	GUICtrlSetData($Button3, 'Hi')
	;Sleep (5000)
      GUICtrlSetImage($Button3, @SystemDir & '\shell32.dll', 167, 0)


EndFunc   ;==>_Button3
;-------------------------------
Func _Button2()

	TrayTip("Прячем программу", "Замена иконки", 5, 1)
	            GUICtrlSetData($Button2, 'Hidden')
                    GUICtrlSetImage($Button3, @SystemDir & '\shell32.dll', 239, 0)
                    GUICtrlSetData($Button3, 'Show')
EndFunc   ;==>_Button2


Если удалить стиль $BS_ICON , то я добиваюсь нужного мне эффекта, но при запуске скрипта получаю пустую кнопку.
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Dessan
Если удалить стиль $BS_ICON , то я добиваюсь нужного мне эффекта, но при запуске скрипта получаю пустую кнопку
Просто добавьте кнопке текст. Пробел, табуляцию, перевод строки... любой невидимый символ.
 
Верх