Листинг 10.5.
Определение общей информации об окне
procedure TfrmWindowProp.LoadWindowInfo();
var
rect: TRect;
buffer: String;
begin
//Сбор сведений об окне
//..имя класса
SetLength(buffer, 1024);
SetLength(buffer, GetClassName(wnd, PAnsiChar(buffer), 1024));
txtClassName.Text := buffer;
//..имя (заголовок) окна
SetLength(buffer, SendMessage(wnd, WM_GETTEXTLENGTH, 0, 0) + 1);
SendMessage(wnd, WM_GETTEXT, Length(buffer),
Integer(PAnsiChar(buffer)));
txtWindowName.Text := buffer;
//..идентификатор (или дескриптор меню) окна
txtId.Text := IntToStr(GetWindowLong(wnd, GWL_ID));
//..оконный прямоугольник
GetWindowRect(wnd, rect);
txtWindowRect.Text :=
\'(\' + IntToStr(rect.Left) + \',\' + IntToStr(rect.Top) + \')\' +
\' – \' +
\'(\' + IntToStr(rect.Right) + \',\' + IntToStr(rect.Bottom) + \') \' +
IntToStr(rect.Right–rect.Left) + \'x\' + IntToStr(rect.Bottom –
rect.Top);
//Определение стиля окна
LoadWindowStyle();
LoadWindowExStyle();
end;
Если вы внимательно просмотрели листинг 10.5, то могли заметить вызовы двух процедур в двух последних строках кода. Процедура LoadWindowStyle заполняет списки используемых и доступных оконных стилей (см. рис. 10.4), а процедура LoadWindowExStyle соответственно заполняет списки используемых и доступных дополнительных (или расширенных) стилей окна.
Реализация процедуры LoadWindowStyle приводится в листинге 10.6