Форум: Форум C++Разное
Новые темы: 00
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Звук и Win API
 
 автор: alex19921992   (20.03.2007 в 16:09)   письмо автору
 
 

Вопрос прост и понятен: надо воспроизвести звук ТОЛЬКО средствами windows API. Возможно ли такое? Формат звука - mp3 или wav. если есть другие возможные форматы - буду рад о них услышать.

  Ответить  
 
 автор: cheops   (21.03.2007 в 13:02)   письмо автору
 
   для: alex19921992   (20.03.2007 в 16:09)
 

WAV-файл можно проиграть при помощи фукцнии PlaySound()
PlaySound ("filename.wav", NULL, SND_FILENAME | SND_ASYNC);

  Ответить  
 
 автор: alex19921992   (21.03.2007 в 15:10)   письмо автору
 
   для: cheops   (21.03.2007 в 13:02)
 

ошибка, однако...
Linking...
main.obj : error LNK2001: unresolved external symbol __imp__PlaySoundA@12
Release/myapi.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

myapi.exe - 2 error(s), 0 warning(s)

  Ответить  
 
 автор: cheops   (21.03.2007 в 22:09)   письмо автору
 
   для: alex19921992   (21.03.2007 в 15:10)
 

Хм... это Visual Studio? Заголовочный файл windows.h подключаете?
#include <windows.h>

  Ответить  
 
 автор: Фитч   (22.03.2007 в 09:46)   письмо автору
 
   для: cheops   (21.03.2007 в 22:09)
 

Действительно, есть такая ошибка, причем и с <windows.h>...
PlaySound() объявлена в winmm.dll, можно попробовать загрузить ее напрямую

  Ответить  
 
 автор: alex19921992   (22.03.2007 в 12:28)   письмо автору
 
   для: Фитч   (22.03.2007 в 09:46)
 

Естественно, windows.h подключена, ибо - Win API! А как загружать длл-ки, я не знаю, может объясните?

  Ответить  
 
 автор: oleg_alexeev   (22.03.2007 в 13:07)   письмо автору
 
   для: alex19921992   (22.03.2007 в 12:28)
 

Надо собрать проект, подключив к нему библиотеку Winmm.lib

В VS2005 для этого надо на проекте щелкнуть правой кнопкой и выбрать Properties
Далее выбрать Configuration Properties -> Linker -> Input и в поле Additional Dependencies
прописать Winmm.lib

В другой студии или другой среде это будет немножко в другом месте, но смысл тот-же -
Winmm.lib надо указать в качестве входного файла линкера.

При этом проект будет связан с DLL-кой и при загрузке программы система подгрузит и её.

  Ответить  
 
 автор: alex19921992   (22.03.2007 в 13:47)   письмо автору
 
   для: oleg_alexeev   (22.03.2007 в 13:07)
 

Спасибо, в 2005-й все работает. Кстати, что означают параметры в скобках вроде SND_FILENAME | SND_ASYNC?

  Ответить  
 
 автор: oleg_alexeev   (22.03.2007 в 13:54)   письмо автору
 
   для: alex19921992   (22.03.2007 в 13:47)
 

Там тоже есть список входных файлов линкера. Только не помню где :(
Но тоже в свойствах проекта -> свойства линкера (там это табы вроде-бы)

  Ответить  
 
 автор: alex19921992   (22.03.2007 в 14:05)   письмо автору
 
   для: oleg_alexeev   (22.03.2007 в 13:54)
 

Да, спасибо, разобрался. что означают параметры в скобках вроде SND_FILENAME | SND_ASYNC?

  Ответить  
 
 автор: oleg_alexeev   (23.03.2007 в 10:16)   письмо автору
 
   для: alex19921992   (22.03.2007 в 14:05)
 

SND_FILENAME означает, что первый параметр это имя файла на диске.
SND_ASYNC - играть файл надо асинхронно, т.е. функция возвращает управление сразу же, а звук
продолжает играть. Для прерывания надо вызвать PlaySound с первым параметром = NULL.

  Ответить  
 
 автор: alex19921992   (23.03.2007 в 10:41)   письмо автору
 
   для: oleg_alexeev   (23.03.2007 в 10:16)
 

Спасибо, все понял. А что означает второй параметр(НУЛЛ)? и какие еще бывают дополнительные параметры кроме SND_FILENAME и SND_ASYNC?

  Ответить  
 
 автор: Фитч   (23.03.2007 в 17:50)   письмо автору
 
   для: alex19921992   (22.03.2007 в 14:05)
 

это параметры проигрывания звука:
SND_ACYNC - функция возвращает управление программе сразу после вызова
SND_LOOP - циклическое воспроизведение до вызова PlaySound(NULL,0)
SND_SYNC - функция блокирует программу на время воспроизведения
SND_PURGE - прекращает воспроизведение всех звуков для этой задачи
Есть, по-моему, еще параметры...

  Ответить  
 
 автор: alex19921992   (06.04.2007 в 18:26)   письмо автору
 
   для: Фитч   (23.03.2007 в 17:50)
 

Ой! А mp3-шки не играет! как быть?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования