1. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление

Включение звуков в исполняемый файл

Тема в разделе "С и С++", создана пользователем Never, 29 янв 2007.

Статус темы:
Закрыта.
  1. Never

    Never Гость

    Репутация:
    0
    Здравствуйте!
    Я сделала маленький текстовый редактор, который использует три звуковых wav-файла. Есть ли способ включить эти звуки в исполняемый exe-файл, чтобы в конечном итоге передать программу на другой компьютер в виде одного exe-файла?
    ----
    С уважением.
     
  2. morpheus

    morpheus скриптописец

    Репутация:
    0
    Регистрация:
    7 авг 2006
    Сообщения:
    3.915
    Симпатии:
    1
    Можно, это называеться работа с ресурсами
     
  3. Never

    Never Гость

    Репутация:
    0
    А Вы не могли бы поподробнее рассказать, как это сделать? :)
     
  4. morpheus

    morpheus скриптописец

    Репутация:
    0
    Регистрация:
    7 авг 2006
    Сообщения:
    3.915
    Симпатии:
    1
  5. Never

    Never Гость

    Репутация:
    0
    Простите, пожалуйста, но у меня не получается :(
    В текстовом файле "resource.rc" я написала строчку:

    -------------------------------------------
    MY_SOUNDS CATSOUNDS "cat2.wav"
    -------------------------------------------

    Затем подключила файл "resource.rc" к программе (Shift + F11).

    Потом вставила в начало *.cpp-файла этот код:

    -----------------------------------------------------------------------------------------------------------
    TResourceStream *res_stream = new TResourceStream(0, "MY_SOUNDS", "CATSOUNDS");
    res_stream->SaveToFile("cat2.bin");
    delete res_stream;
    -----------------------------------------------------------------------------------------------------------

    Но программа при компилировании выдает ошибку.
    Помогите, пожалуйста, что я сделала не так?
     
  6. European

    Репутация:
    0
    Регистрация:
    4 сен 2006
    Сообщения:
    2.566
    Симпатии:
    2
    <!--QuoteBegin-Never+29:01:2007, 17:32 -->
    <span class="vbquote">(Never @ 29:01:2007, 17:32 )</span><!--QuoteEBegin-->Потом вставила в начало *.cpp-файла этот код:
    [snapback]54399" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Что-то меня эта строчка смутила :( Может в обработчик кнопки поместить, например? Обьясните подробнее и, желательно, укажите текст ошибки.
     
  7. Never

    Never Гость

    Репутация:
    0
    Вот и меня тоже смущает, что этот код просто "висит" в программе, не привязанный ни к какому обработчику. Может, его вообще нужно в заголовочный *.h-файл поместить? :)

    Просто по второй ссылке, которую дал уважаемый Morpheus, написано "А где-то в программе:..." должен быть этот код. А я новичек, только учусь, и мне бы хотелось конкретно узнать, куда именно нужно это вставить.
    В обработчик кнопки не хотелось бы. Но если TResourceStream - это компонент, то должен же быть, наверное, и обработчик этого компонента? Но я не могу найти, где он находится в закладках?

    А ошибки выдает следующие:
    - Declaration Syntax Error
    - Declaration Terminated Incorrectly
     
  8. Never

    Never Гость

    Репутация:
    0
    Ура!!! Таки получилось! :)
    Но немного по другой формуле:
    =====================
    //in rc
    /*NAME TYPE FILE*/
    app RCDATA your.exe
    //in cpp
    TResourceStream *rs = new
    TResourceStream((int)HInstance,AnsiString("app"),RT_RCDATA);
    rs->SaveToFile("your.exe");
    delete rs ;
    =====================

    Так как мне нужно было подключить звуковые файлы, то я вставила код в те обработчики, в которых эти звуки должны были проигрываться.

    Только у меня теперь после запуска экзешника на другом компе, эти три звуковых файла снова из него "вываливаются", т.е. опять вместе с экзешником лежат в папочке три wav-файла. Так и должно быть? Просто я думала, что всё так и будет храниться в одном ехе-файле.
     
  9. zubr

    zubr Гость

    Репутация:
    0
    А куда ж они денутся, если вы их не удалите после окончания работы программы или после их проигрывания. Если не хотите, чтобы юзер их видел во время работы программы, сохраняйте их не в каталог программмы, а в другое место, к примеру в папку Temp. Есть еще вариант, выгружать файлы из ресурса в память программы, не сохраняя их на диске, но это для начинающего программиста, имхо, трудно.
     
  10. WinMain

    WinMain Гость

    Репутация:
    0
    Есть функция sndPlaySound, которая может проигрывать звук как из файла на диске, так и прямо в оперативной памяти. Т.е. из ресурсов не нужно вывыливать файлы на диск, а можно грузить их сразу в оперативную память и прямо там проигрывать.
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей