Статья

Статья Проигрывание Wave-файлов под MFC

Работа добавлена на сайт bukvasha.net: 2015-10-29

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 26.12.2024



Проигрывание Wave-файлов под MFC

1. Введение

В этой главе мы создадим программу, проигрывающую WAVE-файлы. Для начала создадим проект mysound в диалоговом режиме с использованием MFC. В начало файла mysoundDlg.cpp надо написать #include <mmsystem.h>, но это не всё, а теперь самое главное( если это не сделать, то будет ошибка при линковании ) :

1. Выберите Project -> Settings... --> C/C++ --> Code Generation и поставте Multithreaded DLL

2. Выберите Project -> Settings... --> Link --> General и поставте в поле Object/Library modules библиотеку winmm.lib( это очень важно, проверте !!! )

2. Проигрывание Wave-файла в виде ресурса

Первым делом надо создать ресурс, для этого в файле mysound.rc2 надо вписать строчку IDSOUND_CORRECT sound rescorrect.wav, где IDSOUND_CORRECT - индефикатор ресурса, sound - тип ресурса( название можно менять ), rescorrect.wav - файл ресурса. После этого в файле Resource.h надо зарегистрировать ресурс: #define IDSOUND_CORRECT 130. Число 130 не должно совпадать с другими числами.

Как только ресурс зарегистрирован можно написать в файле mysoundDlg.cpp функции проигрывания этого ресурса :

 static void PlayResource(LPCTSTR lpszSound) { HRSRC hRes; // resource handle to wave file HGLOBAL hData; BOOL bOk = FALSE; if ((hRes = ::FindResource(AfxGetResourceHandle(), lpszSound, _T("sound"))) != NULL &&   

 (hData = ::LoadResource (AfxGetResourceHandle(), hRes)) != NULL)  {

// found the resource, play it bOk = sndPlaySound((LPCTSTR)::LockResource(hData), SND_MEMORY|SND_SYNC|SND_NODEFAULT); FreeResource(hData);  } if (!bOk)  { AfxMessageBox("ERROR !!! Can not play the sound.

 nNot find sound board !!!");   } } inline static void PlayResource(UINT nIDS)  { PlayResource(MAKEINTRESOURCE(nIDS)); }

В фунции ::FindResource(AfxGetResourceHandle(), lpszSound, _T("sound")) третий параметр - тип ресурса, который был описан выше.

Теперь можно проиграть ресурс : PlayResource( IDSOUND_CORRECT );

3. Проигрывание Wave-файла с диска

Для проигрывания WAVE-файла с диска можно использовать функцию :

    BOOL sndPlaySound(      LPCTSTR  lpszSoundName;      

 UINT  fuOptions;    );   Параметры функции: 

 lpszSoundName  Имя файла. Если этот параметр  NULL,

то проигрывание файла останавливается.   fuOptions

Специальные опции для проигрывания музыки.

Они могут быть следующими: 

Значение                     Описание 

SND_SYNC Музыка играется синхронно, и функция

не возвращает указатель   пока не будет конца файла.

SND_ASYNC Музыка играется асинхронно, и функция

возвращает указатель   сразу после начала

проигрывания файла. Чтобы остановить проигрывание,

надо вызвать функцию SndPlaySound с параметром

lpszSoundName    установленным в NULL.

SND_NODEFAULT Если файл не найден, то функция

возвращает указатель   сразу и не

проигрывает стандартный звуковой эффект Windows.

SND_MEMORY Этот параметр нужен для проигрывания 

Wave-файла в виде ресурса( из памяти ).

SND_LOOP Этот параметр нужен для проигрывания

 Wave-файла в циклическом режиме.   Также

 при этом вы должны использовать влаг SND_ASYNC.   

 Чтобы остановить проигрывание, надо вызвать

 функцию SndPlaySound   с параметром

lpszSoundName установленным в NULL.

SND_NOSTOP Если музыка уже проигрывается,

 то функция возврвщает FALSE. 

 Возвращаемое значение:  Если музыка проигрывается

 правильно, то функция возврвщает TRUE, иначе FALSE.

  Пример использования:   B

  OOL bOk = sndPlaySound( "test.wav", SND_SYNC);     

  if (!bOk)  {      AfxMessageBox

  ("Error ! Can not play the sound. !!!");   }  

Список литературы

Для подготовки данной работы были использованы материалы с сайта http://www.realcoding.net/



1. Реферат Производство, импорт и экспорт стеклянной тары в России с 1990 по 2010 г.
2. Реферат на тему Статистические методы анализа финансового состояния предприятия в условиях рынка
3. Контрольная работа Классификация органов исполнительной власти и виды правонарушений
4. Реферат на тему Movie Serials Essay Research Paper All but
5. Реферат Проблемы налогообложения заработной платы
6. Реферат Исследование фирменной структуры рынка
7. Реферат на тему The Keen Hamlet Essay Research Paper Of
8. Реферат на тему LightDArk Essay Research Paper Light DarkOutlineThesis
9. Реферат на тему The Whale Shark Essay Research Paper The
10. Реферат на тему Women As Leaders Essay Research Paper More