|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Авг 31, 2003 09:50:22 Здравствуйте, любители MASM32. При изучении “Урок 16: Объект события” столкнулся с такой проблемой: Решил использовать объект события для проигрывания фоновой музыки (начинает играть с запуска проги, есть возможность остановить, есть возможность возобновить). Использую функцию PlaySound. Внимание вопрос: 1) почему фоновая музыка не останавливается сразу, а только по окончанию проигрывания. Есть предположение, что это из-за использования SND_SYNC при проигрывании музыки, но если ставить SND_ASYNC то глючит ;-( Посоветуйте способы проигрывания фоновой музыки и использование альтернативных wav форматов (примеры и описания на русском приветствуются). Использование альтернативных wav форматов – тема уже была зыыы, но может уже кто эти вопросы задавал, ответит мне и поделится наработками. А если бы появилась статья на эту тему, то было бы замечательно. Код: SoundResource db "1.wav",0 … .IF uMsg==WM_CREATE invoke CreateEvent,NULL,TRUE,TRUE,NULL mov hEventStart,eax mov eax,OFFSET ThreadProc invoke CreateThread,NULL,NULL,eax,\ NULL,NORMAL_PRIORITY_CLASS,\ ADDR ThreadID mov hThread,eax … .ELSEIF uMsg==WM_COMMAND mov eax,wParam .if lParam==0 .if ax==IDM_START_THREAD invoke SetEvent,hEventStart .elseif ax==IDM_STOP_THREAD mov EventStop,TRUE invoke EnableMenuItem,hMenu,IDM_START_THREAD,MF_ENABLED invoke PlaySound,NULL,NULL,SND_PURGE ;Прекратить воспроизводить звук немедленно – НЕ РАБОТАЕТ invoke ResetEvent,hEventStart .else invoke DestroyWindow,hWnd .endif .endif … ThreadProc PROC USES ecx Param:DWORD invoke WaitForSingleObject,hEventStart,INFINITE mov ecx,1 .WHILE ecx!=0 .if EventStop==FALSE invoke PlaySound, addr SoundResource,NULL,SND_SYNC ;Если SND_ASYNC глючит .else invoke MessageBox,hwnd,ADDR StopString,ADDR AppName,MB_OK mov EventStop,FALSE jmp ThreadProc .endif .ENDW ThreadProc ENDP |
|
|
Дата: Авг 31, 2003 11:45:52 Не знаю что там у тя не получается, посмотри аттач-может поможет, для компиляции запустить bat файл в отдельной папке, файл с музыкой sound.wav сам добавь. 118875855__Sound.zip |
|
|
Дата: Авг 31, 2003 19:30:13 Это не совсем то, что я спрашивал! Файл играется превосходно, НО я его остановить не могу во время проигрывания! А при SND_ASYNC глючит! |
|
|
Дата: Авг 31, 2003 19:45:02 Я тут когда-то писал о том, что Win2000 иногда (у меня - всегда) тормозит при запуске приложений которые используют библиотеку WinMM (ваш PlaySound к ней тоже относится). Создаётся впечатление, что MS постепенно сворачивает поддержку WinMM. Я рекомендую вам использовать Bass, FMOD или подобную библиотеку. Там даже есть примеры для MASM32. Для OGG Vorbis, MP3 и т.д. тоже есть библиотеки. |
|
|
Дата: Авг 31, 2003 19:56:49 А если сначала отключить звук, а потом отрубить воспроизведение... |
|
|
Дата: Авг 31, 2003 23:04:57 Ответ profi_r ***А если сначала отключить звук, а потом отрубить воспроизведение...*** По мне, так это изврат. --------------------------------- Ответ Quantum Спасибо за толковый ответ. Я новичок в win32 и многого не знаю! (изучаю с июля 2003) Делайте скидку на это при изъяснении своих мыслей, пожалуйста. ***Библиотека WinMM (ваш PlaySound к ней тоже относится)*** Я догадался об этом по строкам includelib \masm32\lib\winmm.lib ***Я рекомендую вам использовать Bass, FMOD или подобную библиотеку.*** Скачал Bass там нашёл пример на masm! В примере не было bass.lib, но я его нашёл в каталоге с примерами для С. Могу ли я его использовать? Cкачал FMOD + sdk к нему + player. Но не нашёл на сайте (и в доках) примеры для masm, где мне поискать fmod.lib и fmod.inc. Этих 2-х файлов + fmod.dll мне хватит или ещё, что надо? |
|
|
Дата: Авг 31, 2003 23:52:56 · Поправил: Quantum stres В примере не было bass.lib, но я его нашёл в каталоге с примерами для С. Могу ли я его использовать? Конечно, но это только статический переходник к BASS.DLL, т.е. DLL вам всё равно будет нужна. Cкачал FMOD [...] Но не нашёл на сайте (и в доках) примеры для masm, где мне поискать fmod.lib и fmod.inc. :-) Я ждал этого вопроса. Мы с Asterix'ом когда-то копались с этим FMOD. В общем, есть LIB (причём не переходник ;-), есть INC и есть пример на MASM32. Наверное Asterix будет не против если я поделюсь этим добром (молчание - знак согласия). Если нужно, оставьте мыло. |
|
|
Дата: Сен 1, 2003 00:35:19 Скачал Bass там нашёл пример на masm! А вот я в своё время что-то не нашёл этого примера, можно ссылочку какой точно файл(пакет) для этого качать.. |
|
|
Дата: Сен 1, 2003 03:39:22 Asterix У меня тоже есть этот пример. Не помню откуда слил. Могу намылить. |
|
|
Дата: Сен 1, 2003 03:51:35 Давай, только шли обязательно с русского домена, а то у меня там фильтры. |
|
|
Дата: Сен 1, 2003 06:14:50 · Поправил: Quantum Asterix Намёк понял :) ЗЫ: Отправил на ********@pisem.net, т.к. новый (?) адрес не нашёл... долго искал. |
|
|
Дата: Сен 1, 2003 13:28:40 Ответ Asterix http://www.un4seen.com/files/bass18.zip весит 550,5 кб Ответ Quantum ***Конечно, но это только статический переходник к BASS.DLL, т.е. DLL вам всё равно будет нужна.*** Что такое СТАТИЧЕСКИЙ переходник? Чем отличается от нестатического? ***Мы с Asterix'ом когда-то копались с этим FMOD. В общем, есть LIB (причём не переходник ;-), есть INC и есть пример на MASM32.*** Что значит не переходник чем отличается от переходника? Всё интересует: LIB, INC, пример и т.д. Если не сложно пришлите на stres9@rambler.ru. |
|
|
Дата: Сен 1, 2003 16:50:58 Quantum Спасибо! Получил. На этом mail как раз фильтров ... ;-) |
|
|
Дата: Сен 1, 2003 18:50:12 stres Что такое СТАТИЧЕСКИЙ переходник? Чем отличается от нестатического? Ээээ... Моя терминология, так сказать. В общем, когда вы подключаете к проекту статический переходник (вроде user32.lib, gdi32.lib, winmm.lib и т.д. и т.п.) ваше приложение статически подключается к соответствующей библиотеке (user32.dll, gdi32.dll, winmm.dll и т.д. и т.п.) Фактически эти либы не содержат в себе кода, только имена (символы) ф-ций API. В случае с bass.lib наблюдается такая же картина. Об этом свидетельствует даже малый размер LIB. Но есть и другие либы, объектный код содержащие: masm32.lib и иже с ним. Такие либы сами с усами и в DLL не нуждаются. Иногда имеет смысл ограничивать использование DLL в своих приложениях, что бы дистрибутив содержал всего лишь один большой EXE и больше ничего. Таким образом всякие кряки проигрывают фоновый музон без внешних DLL. В вышесказанном есть некоторые неточности, сознательно допущенные дабы упростить суть высказывания. ЗЫ: Отправил большой RAR |
|
|
Дата: Сен 1, 2003 22:06:34 Ответ Quantum Большое спасибо!!! Решил остановиться на FMOD, но осталось несколько вопросов: 1) Со статическими и не статическим разобрался, но как мне прикрепить этот fmod чтобы размер остался не большим (когда я сделал EXE файл из того, что Вы мне прислали у меня получилось 560 кб) 2) msvcrt.lib зачем этот переходник подключать? 3) Где я могу взять описание (где применяются) всех *.lib? Возможно, это многим бы пригодилось. 4) Почему Вы Quantum и Вы Asterix не напишете статью по данной тематике – она бы сняла много вопросов! В данной статье можно было бы сделать ссылки на библиотеки, исходники с пояснениями и т.д. было бы супер. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.070 |