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