Поиск:

Ответ в темуСоздание новой темы Создание опроса
> avi-файл в ресурсах, учусь работать с CAnimateCtrl 
V
    Опции темы
Athlon
Дата 20.6.2006, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 15.1.2006
Где: Украина:: Запорож ье

Репутация: нет
Всего: нет



Хочу сделать в своем приложении такую фитчу - когда начинаются длительные вычисления показывать юзеру ролик. Для этого создаю отдельное диалоговое окно с CAnimateCtrl, но располагать ролик в отдельном файле не хочу(юзер удалит или еще какая пакость случится), поэтому добавил ролик в ресурсы следующим образом:  пункт меню Insert -> Resource,  кнопка Import,  в появившемся диалоговом окне выбораю файла для импорта, в окне типа файлов выбратю Все файлы. Потом пытаюсь запустить ролик следующим образом:
Код

if(m_anime.Open(MAKEINTRESOURCE(IDR_DOWNLOAD)))
{
    if(!m_anime.Play(0, (UINT)-1, (UINT)-1)) AfxMessageBox("play error");
}
else AfxMessageBox("open error");

В чем ошибка??

P.S. Все это я вытворяю в MS VC++ 6.0 
PM MAIL ICQ   Вверх
Coocky
Дата 20.6.2006, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 25
Всего: 62



Цитата(Athlon @  20.6.2006,  16:43 Найти цитируемый пост)
поэтому добавил ролик в ресурсы следующим образом:  пункт меню Insert -> Resource,  кнопка Import,  в появившемся диалоговом окне выбораю файла для импорта, в окне типа файлов выбратю Все файлы

 smile 
Что бы засунуть файл в ресурсы (например *.wav или *.exe) нужно включить какой-либо файл в ресурсы, это добавить в файл описания ресурсов (*.rc) строку

Код

ResurceName ТИП_РЕСУРСА "Имя файла"

Здесь:
ResurceName - уникальное имя ресурса, им мы будем пользоваться, когда будем загружать ресурс. В принципе здесь может стоять и числовой индентификатор ресурса (можно и определенный через #define, но тогда необходимо, чтобы из того места кода, где мы будем грузить ресурс, это определение тоже было видно; в таком случае обычно эти определения выносятся в заголовочный файл ресурсов- для них (файлов) принято использовать расширение *.rh).
ТИП_РЕСУРСА - идентификатор типа ресурса. RCDATA - специальный тип для бинарных ресурсов (грубо говоря, массив байт лежит как есть). *.wav тоже можно объявить как RCDATA, но принято его "регистрировать" как WAVE.
"Имя файла" - полное имя подключаемого файла вместе с расширением (директории разделяются одиночным '\').

 


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
Athlon
Дата 20.6.2006, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 15.1.2006
Где: Украина:: Запорож ье

Репутация: нет
Всего: нет



Coocky, если я тебя правильно понял, то все что мне надо сделать это изменить одну строчку в файле ресурсов. В файле ресурсов была такая строчка:
Код

IDR_DOWNLOAD            VIDEO   DISCARDABLE     "res\\Download.avi"

я меняю ее на следующую:
Код

IDR_DOWNLOAD            RCDATA   DISCARDABLE     "res\\Download.avi"

Эффект нулевой - все также open выдает ошибку. Я что-то не понял в чем соль. 
PM MAIL ICQ   Вверх
Earnest
Дата 21.6.2006, 06:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Смотрим код CAnimateCtrl::Open.
Видим:
Код

...
::AfxFindResourceHandle(lpszName, _T("AVI")), (LPARAM)lpszName); 
...

Какой отсюда вывод? Правильно, MFC ожидает, что тип ресурса называется "AVI"...
В MSDN тоже есть эта информация, если поискать:

Цитата(из описания ACM_OPEN)

lpszName
Pointer to a buffer that contains the path of the AVI file or the name of an AVI resource. 
...
An AVI resource must have the "AVI" type. 
...
 


--------------------
...
PM   Вверх
Coocky
Дата 21.6.2006, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 25
Всего: 62



Цитата

Я что-то не понял в чем соль

Cушай,земляк,не морочь голову.! Тебе ж на пальцах обьяснили (мне б кто так рассказывал! smile )
Вот тебе пример. Все в ресурсах, все работает!
VC++ 7.1 

Присоединённый файл ( Кол-во скачиваний: 25 )
Присоединённый файл  Static.rar 56,89 Kb


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
Athlon
Дата 21.6.2006, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 15.1.2006
Где: Украина:: Запорож ье

Репутация: нет
Всего: нет



Вот теперь все кристально чисто, понятно и работает. Спасибо за объянения, признаю свою ошибку -  в MSDN поверхностно просмотрел. 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0478 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.