Заголовочный файл Main.h
Заголовочный файл main.h содержит обычный набор объявлений глобальных переменных и директив включения файлов, необходимых для примера. Вот как выглядит код секции с директивами включения файлов:
#include <windows.h> #include <stdio.h> #include <D3DX9.h> #include <dxutil.h> #include <dshow.h>
Новым в этом блоке является включение файла dshow.h. Он необходим для вызова интерфейсов и функций DirectShow. Если вы планируете использовать функциональность DirectShow, убедитесь, что этот файл есть в списке включаемых.
В следующем блоке кода находятся прототипы функций. Вот как он выглядит:
LRESULT WINAPI fnMessageProcessor(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); void vCleanup(void); bool bPlayTitleMusic(void); void vStopTitleMusic(void); void vCheckMusicStatus(void);
Функция fnMessageProcessor()— это обычный обработчик сообщений Windows. Здесь нет ничего нового — все та же старая чепуха.
Функция vCleanup() вызывается перед выходом из программы. Она выполняет освобождение интерфейсов.
Функция bPlayTitleMusic() вызывается один раз в начале программы. Она инициализирует DirectShow, загружает файл MP3 и начинает его воспроизведение.
Функция vStopTitleMusic() останавливает воспроизведение музыки перед завершением работы программы.
Функция vCheckMusicStatus() проверяет не завершилось ли воспроизведенеи музыкального сегмента. Если да, воспроизведение музыки повторяется с начала.
Далее в заголовочном файле расположены глобальные переменные. Я создаю несколько указателей на интерфейсы и одну логическую переменную, как показано ниже:
bool g_bBackgroundMusicActive = 0; IGraphBuilder *g_pGraph; IMediaControl *g_pMediaControl; IMediaEvent *g_pEvent; IMediaSeeking *g_pSeeking;
Переменная g_bBackgroundMusicActive используется для отслеживания состояния музыки. Если музыка воспроизводится, ее значение равно 1. Если нет, значение равно 0.
Переменная g_pGraph является указателем на интерфейс IGraphBuilder. Эй, эй, что это за граф?