Составители:
{
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
- …
- следующая ›
- последняя »
