Название: Проигрывание Wave-файлов под MFC
Вид работы: статья
Рубрика: Информатика
Размер файла: 14.36 Kb
Скачать файл: referat.me-131011.docx
Краткое описание работы: Проигрывание Wave-файлов под MFC 1. Введение В этой главе мы создадим программу, проигрывающую WAVE-файлы. Для начала создадим проект mysound в диалоговом режиме с использованием MFC. В начало файла mysoundDlg.cpp надо написать #include <mmsystem.h>, но это не всё, а теперь самое главное( если это не сделать, то будет ошибка при линковании ) :
Проигрывание Wave-файлов под MFC
Проигрывание 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. !!!"); }
Похожие работы
-
Секреты NTFS
. Дефрагментация одиночных файлов Автор: Андрей Крупин Опубликовано 14 мая 2005 года Замечательная, конечно, вещь - дефрагментатор дисков, однако есть у него один недостаток: в силу заложенных в него алгоритмов, он частенько оставляет несколько файлов фрагментированными (как правило, это часто используемые данные, либо занятые каким-либо приложением или системой).
-
Найти самое длинное общее слово двух заданных предложений
Цель работы: Научиться работать со строками с помощью указателей. Задание: Найти самое длинное общее слово двух заданных предложений. Требования к программе:
-
Лабораторная работа по Операционным системам
ГОСУДАРСТВЕННОЕ ВЫСШЕЕ УЧЕБНОЕ ЗАВЕДЕНИЕ «ЗАПОРОЖСКИЙ НАЦИОНАЛЬНЫЙ УНИВЕРСИТЕТ» МИНИСТЕРСТВА ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ АФЕДРА ИНФОРМАЦИОННЫЗ ТЕХНОЛОГИЙ
-
Как ускорить компиляцию с помощью предкомпилированных заголовков в С Builder
Как ускорить компиляцию с помощью предкомпилированных заголовков в С++ Builder Серебров Борис Precompiled headers can dramatically increase compilation speeds ...
-
Создание приложений OLE 2
Создание приложений OLE 2 В этом разделе вы создадите два новых приложения OLE. Первое - простая программа-сервер OLE, второе - пример простого контейнера OLE. Эти программы предназначены для демонстрации минимальных затрат программирования, необходимых для создания приложений OLE 2.
-
Создание текстового редактора
Министерство энергетики РФ Уфимский Энергетический Колледж Курсовая работа по Основам алгоритмизации и программирования на тему “Создание текстового редактора”
-
Разработка линейного однонаправленного списка
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
-
Пример использования MFC в Visual C
В этой статье будет показано как включить потдержку MFC в Visual C++ на примере двух типов приложений: 1. Консольное приложение 2. Приложение типа Windows Application
-
Решение нелинейных уравнений методом интераций
Оглавление Оглавление 1 2.1 Проектирование интерфейса 6 2.2 Программирование вычисления 8 2.3 Визуализация метода 9 2.4 Вычислительный эксперимент 10
-
Создание базы данных Сведения о поставке материалов
КОНТРОЛЬНАЯ РАБОТА По дисциплине: " Информационные технол огии управления" Москва 2009 Условия задачи Для отдела снабжения необходимо ежемесячно рассчитывать недопоставку материалов каждым поставщиком. Расчет выполняется путем подсчета общего количества материалов, поставленного каждым поставщиком за месяц, сравнения этого количества с планом и определения процента поставки.