Перед вами
очередной выпуск рассылки "Программирование на WinApi" Переводы многих функций Win32API, которые часто используются
в данной рассылке, вы можете получать, подписавшись на дружественную
рассылку "WinAPI на
русском". Справочник по функциям Win32API вы
можете посмотреть на сайте BcbDev.ru в разделе MSDN
по-русски.
Работа над ошибками 2 -
Формирование текстовой информации об
ошибке
Иногда требуется определить не
только код последней ошибки, но и её текстовое описание. Для достижения
этой цели, используйте нижеприведенную функцию. При передаче в эту функцию
номера произошедшей ошибки в качестве параметра, ею будет возвращено
символьное описание этой ошибки, полученное из системы.
char * GetSystemErrorMessage( int nNumError=0 )
{
//Буфер для описания ошибки
LPVOID lpMsgBuf;
//Если передан код ошибки,
if(nNumError>0)
//устанавливаем в качестве последней ошибки, ошибку с переданным номером
SetLastError(nNumError);
//Форматируем содержимое
FormatMessage ( FORMAT_MESSAGE_ALLOCATE_BUFFER | // Выделяем буфер
FORMAT_MESSAGE_FROM_SYSTEM, //Сообщение из системы
NULL,
GetLastError(), //Получаем последнее сообщение
MAKELANGID( LANG_NEUTRAL,SUBLANG_DEFAULT),
( LPTSTR ) & lpMsgBuf, 0, NULL );//Сюда помещаем сообщение
//Возвращаем результат
return (char*)lpMsgBuf;
}
Пример использования :)
int main()
{
MessageBox(NULL,GetSystemErrorMessage(122),"",MB_OK);
return 0;
}