Составители:
MessageBox( hWnd, szErrStr, szCaption, MB_ICONEXCLAMATION |  
MB_OK ); 
return; 
} 
3.  Рассмотреть  модуль  ММIO. 
Если  бы  программа  ShowWave  только 
записывала  и  воспроизводила  звуки,  модуль  ММIO  не  использовался  бы.  Но 
нам  необходимо  также  манипулировать  данными  непосредственно  в 
аудиофайлах.  В  частности,  для  графического  отображения  звукового  сигнала 
необходимо  читать  выборки  из WAV-файла.  Кроме  того,  поскольку 
пользователь имеет возможность модифицировать звукозаписи, находящиеся в 
памяти,  иногда программа ShowWave должна сохранять  данные  в  виде  нового 
файла. Модуль ММIO содержит одну функцию для чтения данных, одну - для 
записи и одну - для обработки ошибок, связанных с файлами. 
Чтение WAV-файла.  Функция ReadWaveData загружает  все  данные  из 
WAV-файла в память. Она выполняет следующие операции: 
•  открытие файла; 
•  поиск WAVE-блока; 
•  поиск  вложенного fmt-блока  и  проверка  того,  в  подходящем  ли  формате 
записан звук; 
•  поиск вложенного data-блока и загрузка его в память; 
•  закрытие файла. 
/*--------------------------------------------------- 
READ WAVE DATA Чтение звукозаписи из RIFF-файла в память.  
Возвращает  TRUE при успешном заполнении буфера;     
в противном случае возвращается FALSE. 
Если функция возвращает TRUE, значит, в последних     
трех параметрах содержится информация о новом буфере. 
----------------------------------------------------------------*/ 
BOOL ReadWaveData( HWND hWnd,  
LPSTR lpszFileName, 
LPSTR *lplpWaveData,       // указатель на буфер  
DWORD *lpdwWaveDataSize,   // размер буфера  
DWORD *lpdwSamplesPerSec ) // частота оцифровки  
{  
HMMIO         hmmio;            // дескриптор файла  
MMCKINFO      mmckinfoWave;     // описание блока WAVE  
MMCKINFO     mmckinfoFrnt;      // описание блока fmt  
MMCKINFO      mmckinfoData;     // описание блока data  
PCMWAVEFORMAT pcmWaveFormat;    // содержимое блока fmt 
LONG          lFmtSize;         // размер блока fmt                   
LONG          lDataSize;        // размер блока data  
LPSTR         lpData;           // указатель на буфер данных 
77
      MessageBox( hWnd, szErrStr, szCaption, MB_ICONEXCLAMATION |
                     MB_OK );
      return;
}
     3. Рассмотреть модуль ММIO. Если бы программа ShowWave только
записывала и воспроизводила звуки, модуль ММIO не использовался бы. Но
нам необходимо также манипулировать данными непосредственно в
аудиофайлах. В частности, для графического отображения звукового сигнала
необходимо читать выборки из WAV-файла. Кроме того, поскольку
пользователь имеет возможность модифицировать звукозаписи, находящиеся в
памяти, иногда программа ShowWave должна сохранять данные в виде нового
файла. Модуль ММIO содержит одну функцию для чтения данных, одну - для
записи и одну - для обработки ошибок, связанных с файлами.
     Чтение WAV-файла. Функция ReadWaveData загружает все данные из
WAV-файла в память. Она выполняет следующие операции:
• открытие файла;
• поиск WAVE-блока;
• поиск вложенного fmt-блока и проверка того, в подходящем ли формате
   записан звук;
• поиск вложенного data-блока и загрузка его в память;
• закрытие файла.
/*---------------------------------------------------
READ WAVE DATA Чтение звукозаписи из RIFF-файла в память.
Возвращает TRUE при успешном заполнении буфера;
в противном случае возвращается FALSE.
Если функция возвращает TRUE, значит, в последних
трех параметрах содержится информация о новом буфере.
----------------------------------------------------------------*/
BOOL ReadWaveData( HWND hWnd,
                       LPSTR lpszFileName,
                       LPSTR *lplpWaveData,              // указатель на буфер
                       DWORD *lpdwWaveDataSize, // размер буфера
                       DWORD *lpdwSamplesPerSec ) // частота оцифровки
{
        HMMIO            hmmio;             // дескриптор файла
        MMCKINFO mmckinfoWave; // описание блока WAVE
        MMCKINFO mmckinfoFrnt; // описание блока fmt
        MMCKINFO mmckinfoData; // описание блока data
        PCMWAVEFORMAT pcmWaveFormat; // содержимое блока fmt
        LONG           lFmtSize;          // размер блока fmt
        LONG           lDataSize;         // размер блока data
        LPSTR          lpData;          // указатель на буфер данных
                                          77
Страницы
- « первая
 - ‹ предыдущая
 - …
 - 75
 - 76
 - 77
 - 78
 - 79
 - …
 - следующая ›
 - последняя »
 
