функции С и C++, библиотек C++Builder, API Windows________________913

ция применяется к тому окну, в модуле которого содержится обращение к функ-
ции, то в качестве дескриптора можно подставлять Handle. Например, оператор

CloseWindow(Handle) ;

сворачивает данное окно.

При успешном выполнении большинство функций возвращают ненулевое зна-
чение. При аварийном завершении возвращается нуль. Тогда более развернутую
информацию об ошибке можно получить вызовом функции GetLastError.

Функция GetLastError возвращает значение кода последней ошибки данного
потока. Эти коды индивидуальны для каждого потока и другие потоки их не изме-
няют.

Функция GetLastError должна вызываться сразу после возврата функции,
ошибку которой вы хотите проверить. Это связано с тем, что некоторые функции
вызывают при своем успешном завершении SetLastError(O), что уничтожает код
ошибки.

Большинство функций API Win32 устанавливают код последней ошибки при
аварийном завершении, хотя некоторые устанавливают этот код в случае успешно-
го выполнения. Обычно функции задают такие коды, как FALSE, NULL,
OxFFFFFFFF или -1.

Код ошибки — 32-битовое значение. Наиболее значимый бит 31. Бит 29 заре-
зервирован для кода, определяемого приложением. В системных кодах этот бит не
используется. Таким образом, этот бит показывает, что код был определен прило-
жением. Это гарантирует отсутствие пересечения между вашими и системными
кодами.

Чтобы получить строку сообщения об ошибке по коду, используйте функцию
FormatMessage. Полный список кодов ошибок имеется в заголовочном файле
WINNT.H в Win32 SDK.

Функция EnableWindow делает указанное окно доступным или недоступным
для любых действий пользователя с помощью мыши или клавиатуры. Если окно
недоступно, то предусмотренные в нем процессы продолжаются, но пользователь
не может воздействовать на это окно. Функция возвращает нуль, если окно было
до этого доступным, и ненулевое значение, если оно не было доступным.

Функция FindWindow возвращает дескриптор окна верхнего уровня, класс и
имя которого указаны; функция не ищет дочерние окна.

Параметр IpClassName указывает на строку с нулевым конечным символом,
содержащую имя класса, или является атомом, указывающим на строку с именем
класса. Если этот параметр атом, то это должен быть глобальный атом, созданный
предварительно вызовом функции GlobalAddAtom. ATOM является 16-битной ве-
личиной, которая должна помещаться в младшие разряды слова IpClassName, a
старшие разряды должны быть нулевыми.

Параметр IpWindowName указывает на строку с нулевым конечным симво-
лом, содержащую имя окна (это свойство Caption формы, отображаемое в строке
заголовка окна). Если этот параметр равен NULL, то считается, что под критерий
поиска подходит любое окно указанного класса.

Приведем пример. Оператор

SendMessage(FindWindow("TFormI","Приложение Pmess2"), WM_CLOSE,0,0) ;

использует функцию FindWindow для определения дескриптора окна класса
«TFormI» с именем «Приложение Pmess2», а затем применяет этот дескриптор,
чтобы послать сообщение Windows WM_CLOSE, закрывающее это окно.

Если поиск прошел успешно, то функция FindWindow возвращает дескриптор
окна, имеющего указанное имя класса и имя окна. В противном случае возвраща-