Что нового

[Элементы GUI] Имитация нажатия кнопки-картинки и немного философии

dimid

Новичок
Сообщения
20
Репутация
0
Доброго дня!

Есть следующий код (упрощенно) по которому есть пара вопросов:

Код:
$Form1 = GUICreate("Form1", 700, 800, 333, 150)

$Pic2 = GUICtrlCreatePic("C:\interface\bottom1.jpg", 168, 512, 519, 90)
GUICtrlSetState($Pic2, $GUI_DISABLE)
$Pic5 = GUICtrlCreatePic("C:\interface\bottom_button1.jpg", 203, 560, 166, 35)

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Pic5
			MsgBox (64, '','$Pic5')
	EndSwitch
WEnd


$Pic5 я использую как button - пользователь ее нажимает (по смыслу это кнопка на некоем фоне $Pic2), то что-то происходит (в данном случае msgbox).

Сами вопросы:
1. Как наиболее правильно сделать саму "анимацию" нажатия на кнопку? (хочу чтоб кнопка была именно картинкой, но нажатие было похоже на нажатию на кнопку хоть немного - было некое приутопление)
2. Я не использую никаких стилей у моих "кнопок" (только дефолт). На что это может повлиять и где-то выйти боком? Тот же Koda при создании картинок лепит BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS), который вроде мне и не нужен.

Заранее всем спасибо!
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Автор
D

dimid

Новичок
Сообщения
20
Репутация
0
Спасибо за ссылку, скачал, потестил. Это самый простой способ сделать то, что я хочу? Получается мне придется сильно переделать проект - сделать все картинки (их вставку и все такое) как в файле Ex.au3.

А есть ли опыт использования этого на других осях и разрядностях? В скомпилированном виде в том числе.
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
dimid
autoit не кроссплатформенный язык
 
Автор
D

dimid

Новичок
Сообщения
20
Репутация
0

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
в семерке работает
 
Автор
D

dimid

Новичок
Сообщения
20
Репутация
0
Спасибо за советы, но я пока придумал для своих целей иной путь. Суть такова:
при нажатии на кнопку рисуется на ее месте другая кнопка (как и в советуемых мне скинах, но все это делается не горой кода, а тремя вполне надежными строками). Выходит примерно так:
по нажатии просто через GUICtrlSetState ( $GUI_HIDE/SHOW) скрываем/показываем обычную/утопленную кнопки - все равно же они должны быть заранее нарисованы и положены в папку, то зачем добавлять какие-то скины, если можно это подкостылить итак. Выбрал пока для себя такое решение.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
dimid,
ИМХО, Вам лучше использовать штатную функцию
Код:
_GUICtrlButton_SetImageList()
 
Автор
D

dimid

Новичок
Сообщения
20
Репутация
0
да, видел эту функцию, ее активно adwcleaner использует, но я посчитал это излишеством
 
Верх