Программирование стратегических игр с DirectX 9.0
bda5893f

Воспроизведение звуковых фрагментов

Вернемся к циклу обработки сообщений Windows. В нем находится код, ожидающий пока не будет нажата левая или правая кнопки мыши. Как только произойдет одно из указанных событий, будет воспроизведен соответствующий звук. Вот как выглядит код:

switch(msg) { case WM_LBUTTONDOWN: // Воспроизведение звука g_SoundSys.hrPlaySound(g_sndButtonOver); break; case WM_RBUTTONDOWN: // Воспроизведение другого звука g_SoundSys.hrPlaySound(g_sndButton); break; case WM_DESTROY: PostQuitMessage(0); return 0; default: break; } return DefWindowProc(hWnd, msg, wParam, lParam);

В блоке логики оператора switch видно, как система реагирует на события кнопок мыши вызывая функцию класса звуковой системы hrPlaySound(). Если нажата левая кнопка мыши, воспроизводится звук из объекта g_sndButtonOver. Если нажата правая кнопка мыши, воспроизводится звук из объекта g_sndButton.

ПРИМЕЧАНИЕ

Сообщения WM_LBUTTONDOWN и WM_RBUTTONDOWN являются частью системы событий Microsoft Windows. Существуют сотни различных событий и для получения более подробной информации о них я рекомендую обратиться к документации VisualC++.

На рис. 7.12 показан ход выполнения программы с момента запуска до завершения.


Рис. 7.12. Работа программы, использующей класс звуковой системы

На рис. 7.12 видно, что первой вызывается функция инициализации звуковой системы. Внутри этой функции программа вызывает функцию инициализации из класса SoundSystem. Затем для загрузки двух звуковых файлов вызывается функция загрузки звукового фрагмента из того же класса. После того, как инициализация завершена, программа обрабатывает сообщения, пока не получит сигнал о том, что нажата левая или правая кнопка мыши. Как только это произойдет, программа вызывает метод воспроизведения звука из класса звуковой системы и воспроизводит соответствующий звуковой фрагмент.



Содержание раздела