Что нового

Добавление ресурсов в программу

erlik

Продвинутый
Сообщения
317
Репутация
84
Не получается добавить в программу нужные мне иконки (файлы курсоров).
Сначала пробовал использовать
Код:
#AutoIt3Wrapper_Res_Icon_Add=.\source\busy_rl.cur

, но из четырех иконок добавились только две - те, которые были без анимации. А анимированные(как раз самые нужные) в ресурсы не попали.
Затем решил попробовать ResHacker.exe (для autoit использую его в первый раз) - тот же результат - анимированные курсоры в пролете. А те два, что добавились (ResHacker их поместил в раздел Cursor и Cursor Group)- не отображаются в программе.
#AutoIt3Wrapper_Run_After=.\Utilities\ResHacker.exe -add %out%, %out%, busy_rl.cur, Icon, 201,
#AutoIt3Wrapper_Run_After=.\Utilities\ResHacker.exe -add %out%, %out%, wait_rm.cur, Icon, 202,
#AutoIt3Wrapper_Run_After=.\Utilities\ResHacker.exe -add %out%, %out%, arrow_rm.cur, Icon, 203,
#AutoIt3Wrapper_Run_After=.\Utilities\ResHacker.exe -add %out%, %out%, up_rm.cur, Icon, 204,
#AutoIt3Wrapper_Run_After=.\Utilities\Upx.exe %out%, --best --no-backup --overlay=copy --compress-exports=1 --compress-resources=0 --strip-relocs=1
Кто нибудь может объяснить мне, почему так происходит и как мне все таки добавить курсоры? И почему стандартная директива AutoIt
Код:
AutoIt3Wrapper_Res_Icon_Add
не добавляет анимированные иконки?
 

AZJIO

Меценат
Меценат
Сообщения
2,879
Репутация
1,194
erlik
Потому что в раздел IconGroup добавляются только тип ICO. Посмотри http://www.autoitscript.com/forum/topic/51103-resources-udf/
 
Автор
E

erlik

Продвинутый
Сообщения
317
Репутация
84
Так как же быть? В UDF Resources есть функция для загрузки курсоров из ресурсов скрипта
Код:
_ResourceGetAsBytes()
, но ResHacker.exe категорически отказывается пихать анимированные курсоры в ресурс - указывай ему хоть Icon, хоть Cursor...
Неужели кроме
Код:
FileInstall
нет других вариантов запихнуть эти картинки?
PS: В dll курсоры тоже не лезут.
 

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
erlik
нет других вариантов запихнуть эти картинки?

В этой теме
http://autoit-script.ru/index.php/topic,2849.0.html
говорится, что можно и произвольные данные добавлять...
 

AZJIO

Меценат
Меценат
Сообщения
2,879
Репутация
1,194
erlik
нет других вариантов запихнуть эти картинки?
есть, но как и в любой области нужно разбираться самому. Я тоже не знал что можно музыку в памяти воспроизводить, оказалось есть. Думаю с анимацией даже проще должно быть.
 
Автор
E

erlik

Продвинутый
Сообщения
317
Репутация
84
AZJIO
...как и в любой области нужно разбираться самому...
Таки я пытаюсь разобраться :smile:
Попробовал вот так - запихнуть в виде файлов,
Код:
#AutoIt3Wrapper_Res_File_Add=F:\Install\AutoIT3\Scripts\source\busy_rl.cur, rt_rcdata, ANI_GIF_1
#AutoIt3Wrapper_Res_File_Add=F:\Install\AutoIT3\Scripts\source\wait_rm.cur, rt_rcdata, ANI_GIF_2
#AutoIt3Wrapper_Res_File_Add=F:\Install\AutoIT3\Scripts\source\arrow_rm.cur, rt_rcdata, ANI_GIF_3
#AutoIt3Wrapper_Res_File_Add=F:\Install\AutoIT3\Scripts\source\up_rm.cur, rt_rcdata, ANI_GIF_4
а затем извлечь функциями
Код:
<resources.au3>


Код:
$CursorBusy = GUICtrlCreateIcon("", -1, 440, 30, 25, 25)
    $CursorWaitFinish = GUICtrlCreateIcon("", -1, 440, 30, 25, 25)
	$CursorFinish = GUICtrlCreateIcon("", -1, 440, 30, 25, 25)
	$CursorZero = GUICtrlCreateIcon("", -1, 440, 30, 25, 25)
	
	_ResourceSetImageToCtrl($CursorBusy,"ANI_GIF_1")
	_ResourceSetImageToCtrl($CursorWaitFinish,"ANI_GIF_2")
	_ResourceSetImageToCtrl($CursorFinish,"ANI_GIF_3")
	_ResourceSetImageToCtrl($CursorZero,"ANI_GIF_4")
Тоже не прокатило. Файлы в раздел rcdata добавились, но программа их почему то не отображает. :'(

WSWR
FAQ я читал - но решению моей проблемы это не помогло.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
У вас получилась полная каша. Вы пытаетесь добавить курсор в RCDATA, а затем вставить его в Static (Icon) control. Если целью является анимированная картинка на форме, то AutoIt нативно не поддерживает анимацию кроме AVI. Для GIF есть библиотека от trancexx. Если речь идет именно о курсоре, то причем здесь GUICtrlCreateIcon()?
 
Автор
E

erlik

Продвинутый
Сообщения
317
Репутация
84
Re: Добавление анимированных ресурсов в программу

Yashied
Действительно "целью является анимированная картинка на форме". (а курсоры просто хорошо подошли под то, что мне требовалось - поэтому их и использовал). И GUICtrlCreateIcon() анимацию отлично воспроизводит. До тех пор пока я использую путь до файлов курсора
Код:
GUICtrlCreateIcon(@ScriptDir&"\source\busy_rl.cur", -1, 440, 30, 25, 25)

Но как только курсоры включаются (вышеописанными способами) в ресурсы программы - ничего не работает.
Так что мне требуется способ включить файлы анимированных курсоров в ресурсы и возможность их воспроизведения. Если библиотека от trancexx (найти бы ее еще) здесь к месту - то попробую использовать.
---------------------------------------------
Библиотека GIF_Animation, как я понял, работает только с форматом .gif.
Если бы файлы курсоров были gif-овские, проблема бы решилась использованием библиотеки resources.au3, которая умеет воспроизводить на форме эти файлы из ресурсов rt_rcdata. Но формат .cur какой то странный - с одной стороны покадровая анимация, но не gif. Попробовать разве что чем-нибудь сконвертировать в gif - XnView вот не хочет это делать...
 
Верх