Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Файл Wav в exe


Автор: Cricket2007 14.11.2008, 03:59
Подскажите плиз как можно файл WAV зпхнуть в EXE и чтоб при зауске проигрывался WAV файл. Для простоты объясните если не сложно на примере консольного приложения. 

Автор: Rickert 14.11.2008, 05:12
Cricket2007, уважаемый, если вы не имеете понятия как это сделать, то лучше вам не браться: разломаете всё. Вам нужно смотреть разделы "Спецификация исполняего файла windows" + курить ассемблер.

Автор: vinter 14.11.2008, 06:56
Cricket2007, смотри в сторону resource, т.е смотри как они добавляются и делай по аналогии. Там все просто smile

Автор: xvr 14.11.2008, 12:28
Цитата(Cricket2007 @ 14.11.2008,  03:59)
Подскажите плиз как можно файл WAV зпхнуть в EXE и чтоб при зауске проигрывался WAV файл. Для простоты объясните если не сложно на примере консольного приложения.

Засунуть в ресурс, (например под именем MYSOUND), затем
Код

PlaySound("MYSOUND",NULL,SND_RESOURCE|SND_ASYNC);

Цитата

 Header: Declared in Mmsystem.h; include Windows.h.
 Library: Use Winmm.lib.

Автор: Cricket2007 14.11.2008, 17:44
Цитата(xvr @ 14.11.2008,  12:28)
Цитата(Cricket2007 @ 14.11.2008,  03:59)
Подскажите плиз как можно файл WAV зпхнуть в EXE и чтоб при зауске проигрывался WAV файл. Для простоты объясните если не сложно на примере консольного приложения.

Засунуть в ресурс, (например под именем MYSOUND), затем
Код

PlaySound("MYSOUND",NULL,SND_RESOURCE|SND_ASYNC);

Цитата

 Header: Declared in Mmsystem.h; include Windows.h.
 Library: Use Winmm.lib.

попробовал так все компилит без ошибок но только ничо не воспроизводит WAV файл запхнулся в exe  т к exe стал больше весить пробобал я так сделать в MFC

Добавлено через 14 минут и 35 секунд
Цитата(Rickert @ 14.11.2008,  05:12)
Cricket2007, уважаемый, если вы не имеете понятия как это сделать, то лучше вам не браться: разломаете всё. Вам нужно смотреть разделы "Спецификация исполняего файла windows" + курить ассемблер.

А нафига мне ассемблер если это и на плюсах легко сделать только нужно знать как  а насчет Спецификации исполняего файла windows может вы и правы но мне пока не важно как там среда разработки генерирует EXE файл а что я могу разломать я ваще не понял 

Автор: xvr 14.11.2008, 21:08
Цитата(Cricket2007 @ 14.11.2008,  17:44)
Цитата(xvr @ 14.11.2008,  12:28)
Цитата(Cricket2007 @ 14.11.2008,  03:59)
Подскажите плиз как можно файл WAV зпхнуть в EXE и чтоб при зауске проигрывался WAV файл. Для простоты объясните если не сложно на примере консольного приложения.

Засунуть в ресурс, (например под именем MYSOUND), затем
Код

PlaySound("MYSOUND",NULL,SND_RESOURCE|SND_ASYNC);

Цитата

 Header: Declared in Mmsystem.h; include Windows.h.
 Library: Use Winmm.lib.

попробовал так все компилит без ошибок но только ничо не воспроизводит WAV файл запхнулся в exe  т к exe стал больше весить пробобал я так сделать в MFC

Имя ресурса правильное (оно вообще есть?) Что возвращает PlaySound?

Автор: Cricket2007 14.11.2008, 23:01
Имя ресурса? всмысле имя самого wav файла? файл и весь проект  я назвал "MYSOUND" когда файл добавил в проект ему было присвоено IDR_WAVE1 ,  PlaySound возвращает 0  вообщем я делал так запустил VS 6 выбрал NEW потом тип поэкта MFC  диалоговое окно потом нажал Ctr+R, import, Выбрал MYSOUND.wav ,нажал OK Подключил 
#include<windows.h>
#include<mmsystem.h>
#pragma comment(lib,"winmm.lib")
 
   в теле  BOOL CMYSOUNDDlg::OnInitDialog()

   написал   PlaySound("MYSOUND",NULL,SND_RESOURCE|SND_ASYNC);
   кликнул Bild 
   убедился что 
   
    MYSOUND.exe - 0 error(s), 0 warning(s)
 
запустил файлик  появилось диалоговое окно но звука я так и не услышал никакого 

что я сделал не так?  или может мне подсказали не правильно ?

Автор: J0ker 15.11.2008, 06:34
PlaySound(MAKEINTRESOURCE(MYSOUND), GetModuleHandle(NULL), SND_RESOURCE|SND_ASYNC);

доку пушкин читать будет?  smile 

Автор: vinter 15.11.2008, 08:31
Цитата(J0ker @  15.11.2008,  07:34 Найти цитируемый пост)
PlaySound(MAKEINTRESOURCE(IDR_WAVE1), GetModuleHandle(NULL), SND_RESOURCE|SND_ASYNC);


Автор: J0ker 15.11.2008, 18:18
Цитата(vinter @ 15.11.2008,  08:31)
Цитата(J0ker @  15.11.2008,  07:34 Найти цитируемый пост)
PlaySound(MAKEINTRESOURCE(IDR_WAVE1), GetModuleHandle(NULL), SND_RESOURCE|SND_ASYNC);


ээээ
вообще-то в MAKEINTRESOURCE ставится ID ресурса
чел сказал что у него он под ID MYSOUND...

Автор: Cricket2007 15.11.2008, 21:56
пасиб теперь все работает  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)