Шаг 31 - Ошибки при вызове Windows API

Вызывая функции Win 32 API вы передаете какие-то параметры. WindowsMoveWindow. Идея практически похожа для вызова всех функций API. Итак, первоначально многие функции имеют тип BOOL, что позволяет быстро определить успешность вызова. Более подробная информацию можно получить вызвав GetLastError. Получается вот такой псевдокод:

If (MoveWindow(..)!=TRUE)
{
	rez = GetLastError();
}

Почему нельзя вызывать GetLastError после каждой функции не проверяя правильность ее выполнения? Потому, что следующий вызов, если он был успешен, может эту ошибку не очистить. Это первое. В случае же ошибки значение будет переписано, это заставляет проверять сразу после возникновения ошибки во избежании потери данных. Вывод, если функция вернула признак ошибки нужно сразу вызывать GetLastError(). Следующий вопрос, который должен возникнуть это повлияет ли другой поток на возврат GetLastError()? Ответ - нет. Функция GetLastError() возвращает ошибку для данного потока используя механизм известный как локальная память потока. Данная функция возвращает код ошибки. Сами коды ошибки можно посмотреть в WinError.h.

31_1.gif (7656 b)

Этот файл довольно большой и ковыряться в нем не особенно приятно.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 05.01.2003