Шаг 148 - WAV файлы в ресурсах

  по мотивам материалов присланных

  ---Исходное сообщение-----
  От: Oleg 
  Кому: kaev@yandex.ru
  Дата: 8 марта 2000 г. 20:40
  Тема: MFCByStep
  Проигрывание Wave-файла в виде ресурса
  ..........................
  -------------------------
  К сожалению материал был взят с какого то сайта
  и его пришлось переработать.
Итак, задача следующая. Вы хотите создать программу, которая будет снабжена звуковым сопровождением. Вы решили использовать WAV файлы. У Вас есть два варианта, первый это хранить звуковые файлы отдельно, скажем в виде файлов. Это плохо, так как их могут стереть или испортить. Наиболее разумно поместить их внутри ресурсов.

Создаем приложение, как MFC AppWizard на базе диалогового окна. На окно помещаем кнопку для проигрывания файла. Имя проекта TestWav. Давайте поместим звуковой файл в ресурсы. Выбираем пункт меню Insert -> Resource. На появившемся окне есть кнопка Import. Нажмите её и у вас появится диалоговое окно выбора файла для импорта. В окне типа файлов надо выбрать WAV и найти файлы, например, в папке Windows\Media.

Посмотрите вкладку Resource, вы увидите папочку WAVE. Там и будет наш ресурс. Теперь код для кнопки, пока он такой:

void CTestWavDlg::OnButton1() 
{
	// TODO: Add your control notification handler code here
}
Итак, первое нам необходимо объявить заголовочный файл с функциями проигрывания WAV файлов
// TestWavDlg.cpp : implementation file
//
.......
#include "TestWavDlg.h"
#include "mmsystem.h"
.......
Незабудьте в Project Setting добавить winmm.lib. Ну, а теперь код.
void CTestWavDlg::OnButton1() 
{
	HRSRC hWav;
	hWav=FindResource(AfxGetResourceHandle(),MAKEINTRESOURCE(IDR_WAVE1),"WAVE");
	if (hWav!=NULL)
	{
           HGLOBAL hPtrDataWav;
	   hPtrDataWav=LoadResource(AfxGetResourceHandle(), hWav);
	   if (hPtrDataWav!=NULL)
	   {
	   LockResource(hPtrDataWav);
           sndPlaySound((LPCTSTR)hPtrDataWav,SND_MEMORY|SND_ASYNC );
           FreeResource(hPtrDataWav);
	   }
	   else AfxMessageBox(" Not Load");
	}
	else AfxMessageBox("Not Resource");
}

Вот так это делается. Ищем ресурс, дальше читаем ресурс, блокируем его, а потом проигрываем как уже рассказывалось и разблокируем.

Поместить можно в файл ресурсов всё, что угодно и в последствии использовать !!!


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 14.03.2000