Операционные системы. Марапулец Ю.В. - 76 стр.

UptoLike

Составители: 

dwRet = mciSendCommand( mciDevice, MCI_SAVE, MCI_SAVE_FILE |
MCI_WAIT, (DWORD)(LPVOID) &mciSaveParms ) ;
if( dwRet != 0 )
{
ReportMCIError( hWnd, dwRet ) ;
return( FALSE ) ;
}
return ( TRUE ); //успешное завершение
}
Обработка ошибок. Последняя функция в модуле MCI осуществляет
обработку ошибок, возникших при выполнении предыдущих функций. Она
отображает окно сообщения, в котором содержится информация о том, что
случилось.
Процедура обработки ошибок использует две строки. Первая из них
представляет собой название программы, которое будет отображаться в
заголовке окна. Эта строка загружается из ресурса строковой таблицы. Вторая -
это сообщение об ошибке, получаемое непосредственно от MCI. Функция
mciSendCommand возвращает код ошибки, который программа ShowWave
записывает в переменную dwRet. Если результирующее значение не равно 0,
значит, произошла ошибка, и программа ShowWave вызывает функцию
ReportMCIError. Функция mciGetErrorString возвращает строку,
соответствующую коду ошибки, который содержится в переменной dwRet.
В файле Mmsystem.H определено приблизительно 90 кодов различных
ошибок. Некоторые из них, например MCIERR_INVALID_DEVICE_ID,
могут
произойти в любой момент; другие, такие как
MCIERR_CANNOT_LOAD_DRIVER,
возникают только при выполнении
определенных команд (в данном случае команды Open). Некоторые ошибки
характерны только для определенных устройств. В частности, ошибка
MCIERR_WAVES_OUTPUTSINUSE
свидетельствует о том, что все
аудиоустройства в настоящий момент заняты.
/*-------------------------------------
REPORT MCI ERROR
Сообщить пользователю о возникшей MCI-ошибке
---------------------------------------------------------------*/
static void ReportMClError( HWND hWnd, DWORD dwError )
{
HINSTANCE hInstance;
char szErrStr[MAXERRORLENGTH];
char szCaption[MAX_RSRC_STRING_LEN];
hInstance = GetWindowInstance( hWnd );
LoadString( hInstance, IDS_CAPTION, szCaption, sizeof(szCaption) );
mciGetErrorString( dwError, szErrStr, sizeof(szErrStr) );
76
      dwRet = mciSendCommand( mciDevice, MCI_SAVE, MCI_SAVE_FILE |
                        MCI_WAIT, (DWORD)(LPVOID) &mciSaveParms ) ;
      if( dwRet != 0 )
      {
             ReportMCIError( hWnd, dwRet ) ;
             return( FALSE ) ;
      }
      return ( TRUE );          //успешное завершение
}

      Обработка ошибок. Последняя функция в модуле MCI осуществляет
обработку ошибок, возникших при выполнении предыдущих функций. Она
отображает окно сообщения, в котором содержится информация о том, что
случилось.
      Процедура обработки ошибок использует две строки. Первая из них
представляет собой название программы, которое будет отображаться в
заголовке окна. Эта строка загружается из ресурса строковой таблицы. Вторая -
это сообщение об ошибке, получаемое непосредственно от MCI. Функция
mciSendCommand возвращает код ошибки, который программа ShowWave
записывает в переменную dwRet. Если результирующее значение не равно 0,
значит, произошла ошибка, и программа ShowWave вызывает функцию
ReportMCIError.      Функция     mciGetErrorString     возвращает     строку,
соответствующую коду ошибки, который содержится в переменной dwRet.
      В файле Mmsystem.H определено приблизительно 90 кодов различных
ошибок. Некоторые из них, например MCIERR_INVALID_DEVICE_ID, могут
произойти       в       любой       момент;       другие,      такие      как
MCIERR_CANNOT_LOAD_DRIVER, возникают только при выполнении
определенных команд (в данном случае команды Open). Некоторые ошибки
характерны только для определенных устройств. В частности, ошибка
MCIERR_WAVES_OUTPUTSINUSE свидетельствует о том, что все
аудиоустройства в настоящий момент заняты.

/*-------------------------------------
  REPORT MCI ERROR
   Сообщить пользователю о возникшей MCI-ошибке
---------------------------------------------------------------*/
static void ReportMClError( HWND hWnd, DWORD dwError )
{
        HINSTANCE hInstance;
        char szErrStr[MAXERRORLENGTH];
        char szCaption[MAX_RSRC_STRING_LEN];
        hInstance = GetWindowInstance( hWnd );
        LoadString( hInstance, IDS_CAPTION, szCaption, sizeof(szCaption) );
        mciGetErrorString( dwError, szErrStr, sizeof(szErrStr) );

                                        76