Большой архив статей, книг, документации по программированию, вебдизайну, компьютерной графике, сетям, операционным системам и многому другому
 
<Добавить в Избранное>    <Сделать стартовой>    <Реклама на сайте>    <Контакты>
  Главная Документация Новости ИТ Программы Книги Games   Обои   Экспорт RSS E-Books
 
Поиск по сайту

TOP-10 программ
Symantec Norton Ghost 9.0
Partition Magic 8.0.2 Pro
Xilisoft 3GP Video Converter v3.1.7.0616b
Norton AntiVirus 2005
Xilisoft 3GP Video Converter v2.1.52.831b
Антивирус Касперского Personal 5.0.303 beta 2
RAR Password Cracker 4.12
ABBYY PDF Transformer v1.00.820
Windows Movie Maker 2.6
MP3 To Ringtone Gold v3.02
 
Наши сервисы
Рассылка новостей. Подпишитесь на рассылку сейчас и вы всегда будете в курсе последних событий в мире информационных технологий.
Новостные информеры. Поставьте наши информеры к себе и у вас на сайте появится дополнительный постоянно обновляемый раздел.
Добавление статей. Если вы являетесь автором статьи или обзора на тему ИТ присылайте материал нам, мы с удовольствием опубликуем его у себя на сайте.
 
 

   Программирование -> C / C++ -> Visual C++ для начинающих


18. Проигрывание 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 res\correct.wav, где IDSOUND_CORRECT - индефикатор ресурса, sound - тип ресурса( название можно менять ), res\correct.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. !!!");	 	} 

4. Пример проекта

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



 
Популярные книги

SQL для "чайников", 5-е издание

Подробнее

Общая информатика. Универсальный курс

Подробнее

Photoshop CS2 для пользователя

Подробнее


 
Новости ИТ
10.01.2009  Skype появился на Android и готовится к покорению iPhone
10.01.2009  Студенты-хакеры улучшат безопасность бостонского метро
09.01.2009  Exeda -- корпоративный цифровой ассистент с Android Linux
09.01.2009  Правительство Вьетнама массово переходит на Open Source
09.01.2009  Windows 7 build 7000
09.01.2009  Silicon Power представила скоростную SDHC
09.01.2009  CES 2009: RealView 360 3D Desktop Scanner - настольный 3D-сканер, один из первых в мире
09.01.2009  W90 - очень быстрый мультимедийный ноутбук ASUS «Ultimate-уровня»
09.01.2009  CES 2009: SanDisk представила семейство G3 - самых быстрых SSD-накопителей на флэш-памяти MLC
09.01.2009  ZOTAC GeForce GTX 285 и GTX 285 AMP! Edition - 3D-ускорители для геймеров на новом GPU NVIDIA
09.01.2009  Net Applications: в декабре доли Firefox и Chrome росли за счет IE
09.01.2009  Imation говорит о «новом классе» SSD и первом в отрасли полном наборе для модернизации на основе SSD
09.01.2009  Маршрутизатор D-Link Xtreme N DIR-685 может играть роль NAS, сервера печати... и цифровой фоторамки
09.01.2009  Очень тонкая фотокамера Pentax Optio P70 имеет разрешение 12 Мп
09.01.2009  pureSilicon 1TB Nitro - первый в мире 2,5-дюймовый SSD объемом 1 ТБ
09.01.2009  Дебютировали мобильные GPU ATI Mobility Radeon HD 4000
09.01.2009  NVIDIA GeForce GTX 285 и GTX 295 представлены официально
09.01.2009  Scythe выпустила процессорный кулер Mugen 2
09.01.2009  Optio E70 - новая компактная камера Pentax начального уровня
09.01.2009  Новый iPhone получит четырехъядерный процессор?
 
Полезно

 
Copyright © CompDoc.Ru
При цитировании и перепечатке ссылка на www.compdoc.ru обязательна. Карта сайта.
 
Rambler's Top100