Составители:
{
ReportError ( hWnd, IDS_UNSUPPORTEDFORMAT );
mmioClose( hmmio, 0 );
return( FALSE ) ;
}
Функция mmioRead требует задания дескриптора файла, указателя буфера
памяти, а также количества байтов. Поле lFmtSize содержит информацию о
количестве байтов в структуре PCMWAVEFORMAT,
которое будет загружено
из дискового файла функцией mmioRead.
Функция mmioAscend перемещает указатель текущей позиции файла в
точку за последним байтом блока формата, подготавливая программу к
выполнению последующей операции.
Для простоты анализа программы Show Wave мы ограничились только 8-
битовыми монозаписями. Чтобы изменить эти параметры, нужно добавить
несколько дополнительных переменных и изменить подпрограмму,
управляющую работой полосы прокрутки.
Итак, мы проверили формат данных. Теперь можно загрузить данные в
память. Программа осуществляет поиск блока data, определяет его размер,
выделяет для него соответствующий буфер в памяти и читает данные в буфер.
/* поиск блока данных */
mmckinfoData.ckid = mmioFOURCC('d','а','t','а');
if( mmioDescend ( hmmio, &mmckinfoData, &mmckinfoWave,
MMIO_FINDCHUNK ) != 0 )
{
ReportError( hWnd, IDS_CORRUPTEDFILE );
mmioClose ( hmmio, 0 ) ;
return( FALSE ) ;
}
/* определение размера блока данных */
lDataSize = (LONG)mmckinfoData.cksize;
if( lDataSize == 0 )
{
ReportError( hWnd, IDS_NOWAVEDATA ) ;
mmioClose( hmmio, 0 );
return( FALSE );
}
/* выделение и блокирование памяти */
lpData = GlobalAllocPtr( GMEM_MOVEABLE, lDataSize );
if( ! lpData )
{
ReportError( hWnd, IDS_OUTOFMEMORY );
mmioClose( hmmio, 0 ) ;
return( FALSE ) ;
80
{ ReportError ( hWnd, IDS_UNSUPPORTEDFORMAT ); mmioClose( hmmio, 0 ); return( FALSE ) ; } Функция mmioRead требует задания дескриптора файла, указателя буфера памяти, а также количества байтов. Поле lFmtSize содержит информацию о количестве байтов в структуре PCMWAVEFORMAT, которое будет загружено из дискового файла функцией mmioRead. Функция mmioAscend перемещает указатель текущей позиции файла в точку за последним байтом блока формата, подготавливая программу к выполнению последующей операции. Для простоты анализа программы Show Wave мы ограничились только 8- битовыми монозаписями. Чтобы изменить эти параметры, нужно добавить несколько дополнительных переменных и изменить подпрограмму, управляющую работой полосы прокрутки. Итак, мы проверили формат данных. Теперь можно загрузить данные в память. Программа осуществляет поиск блока data, определяет его размер, выделяет для него соответствующий буфер в памяти и читает данные в буфер. /* поиск блока данных */ mmckinfoData.ckid = mmioFOURCC('d','а','t','а'); if( mmioDescend ( hmmio, &mmckinfoData, &mmckinfoWave, MMIO_FINDCHUNK ) != 0 ) { ReportError( hWnd, IDS_CORRUPTEDFILE ); mmioClose ( hmmio, 0 ) ; return( FALSE ) ; } /* определение размера блока данных */ lDataSize = (LONG)mmckinfoData.cksize; if( lDataSize == 0 ) { ReportError( hWnd, IDS_NOWAVEDATA ) ; mmioClose( hmmio, 0 ); return( FALSE ); } /* выделение и блокирование памяти */ lpData = GlobalAllocPtr( GMEM_MOVEABLE, lDataSize ); if( ! lpData ) { ReportError( hWnd, IDS_OUTOFMEMORY ); mmioClose( hmmio, 0 ) ; return( FALSE ) ; 80
Страницы
- « первая
- ‹ предыдущая
- …
- 78
- 79
- 80
- 81
- 82
- …
- следующая ›
- последняя »