Home

Page 95
Page 95
background image

 Глава 3

Итак, с помощью SendMessage мы посылаем найденному окну сообщение о

том, что надо поменять текст. Новый текст указан в четвертом параметре

функции SendMessage.
После того, как изменен текст главного окна, нужно запустить поиск до-

черних окон. Обычно каждое окно имеет еще очень много разных элемен-

тов управления (например, кнопок), текст на которых тоже можно изме-

нить. Именно ПОЭТОМУ НУЖНО вызывать функцию

 Эта

функция ищет все элементы управления внутри указанного окна. У нее три

параметра.

1. Идентификатор окна, дочерние элементы которого нужно искать.

2. Адрес функции обратного вызова, которая будет вызываться каждый раз,

когда найдено дочернее окно.

3. Просто число, которое может быть передано в функцию обратного вы-

зова.

Как вы можете заметить, работа функции

 похожа на

 только если вторая ищет окна во всей системе, то первая —

внутри указанного окна.

Функция обратного вызова

 выглядит следующим образом:

//Эта функция вызывается, когда найдено дочернее окно

function

 hwnd): BOOL; stdcall;

begin

 [  тобой')));

end;

Здесь мы также изменяем текст найденного окна с помощью функции

SendMessage. После этого результату присваивается значение true, чтобы
поиск продолжился.
В принципе программу можно считать законченной, но у нее есть один не-

достаток, о котором нельзя умолчать. Допустим, что программа нашла окно,

и начала перечисление в нем дочерних окон, и в этот момент окно закрыли.
Программа пытается послать сообщение окну об изменении текста, а окно

уже не существует, и происходит ошибка выполнения. Чтобы этого не слу-

чилось, в функциях обратного вызова в самом начале нужно поставить про-
верку на правильность полученного идентификатора окна:

if h=0 then exit;

Вот теперь приложение можно считать законченным и

 рабочим.

На компакт-диске в директории \Примеры\Глава 3\][ с тобой вы можете

увидеть пример этой программы и цветные рисунки этого раздела.


Copyright © 2020 Файлообменник files.d-lan.dp.ua

Использование любых материалов сайта возможно только с разрешения автора.