|
|
|
---|
    TWindow определяет фундаментальное поведение для всех окон и объектов управляющих элементов. Экземпляры объектов TWindow - это просто общие окна, но они могут включать в себя меню, курсоры и пиктограммы.
    Attr содеpжит запись TWindowAttr, котоpая опpеделяет
атpибуты создания окон - хаpактеpистики, влияющие на создание
соответствующего интеpфейсного элемента окна. К ним относятся текст,
стиль, pасшиpенный стиль, положение и pазмеp, описатель окна и
идентификатоp управляющего элемента. Эти атрибуты устанавливаются
по умолчанию конструктором Init, но могут переопределяться в
конструкторах наследующих типов.
    См. также: тип TWindowAttr.
    DefaultProc содержит адрес используемой по умолчанию
процедуры окна, которая определяет применяемую по умолчанию обработку
сообщений Windows.
    FocusChildHandle cодеpжит описатель дочеpнего окна для
данного окна, котоpое было активно в момент, когда окно
активизиpовалось в последний pаз. Windows не отслеживает автоматически
фокус дочерних окон, так что когда вы вновь активизируете окно
или восстанавливаете его из пиктограммы, ObjectWindows
обеспечивает восстановление фокуса для того дочернего окна, где он бы в
последний раз.
    С данным полем вы можете работать с помощью методов
FocusChild и UpdateFocusChild.
    Scroller содеpжит указатель на объект TScroller, котоpый
используется для организации прокрутки изображения. В конструкторе
TWindow создается экземпляр объекта Scroller и устанавливается
элемент прокрутки.
    Ниже перечисляются методы, содержащиеся в данном объекте.
    Создает объект окна с порождающим окном, пеpедаваемым в
AParent и соответствующим текстом (заголовком для окон),
пеpедаваемым в ATitle. Для основных окон, не имеющих порождающих окон
AParent должно иметь значение nil. Поле Attr.Style объекта
устанавливается в ws_OverlappedWindow (если окно не является
порожденным окном MDI - в этом случае оно устанавливается в
ws_ClipSiblings). Устанавливает позицию и поля в Attr в их
соответствующие используемые по умолчанию значения для образования
перекрывающихся и всплывающих окон.
    В конструкторе объекта, производного от TWindow (или в любой
момент перед созданием интерфейсного элемента), используемые по
умолчанию значения структуры Attr можно установить по-другому.
Конструктор производного от TWindow объекта может также
устанавливать Scroller (по умолчанию nil) в экземпляр объекта TScroller.
    На основе определения ресурса строит интерфейсный объект,
связанный с элементом экрана (обычно управляющим элементов). Для
построения объекта вызывает TWindowsObject.Init.
    См. также: TWindowsObject.Init.
    Строит и загружает окно из потока S, вызывая сначала
TWindowsObjecrt.Load, а затем считывая и получая дополнительные
поля (Attr и Scroller), введенные в TWindow.
    См. также: TWindowsObject.Load.
    Перед вызовом для уничтожения всего объекта деструктора
Done, наследуемого из TWindowsObject, уничтожает объект TScroller
в Scroller (при его наличии).
    Если объект не был построен с помощью InitResource (в этом
случае экранный элемент уже существует), создает для оконного
объекта соответствующий экранный элемент. Если класс окна еще не
зарегистрирован, Create для регистрации вызывает Register. Затем
Create создает окно и вызывает метод SetupWindow, который вы
можете определить для инициализации вновь созданного окна, обычно
путем создания дочерних окон и изображения графики или текста. В
случае успешного выполнения Create возвращает значение True. В
случае неуспешного выполнения возвращается False, и вызывается
Error.
    Обычно функция Create никогда не вызывается непосредственно.
Create вызывается методом TApplication.MakeWindow, который
выполняет сначала проверку наличия памяти.
    См. также: TWindowsObject.Register,
TApplication.MakeWindow, TWindowsObject.SetupWindow.
    Вызывает используемую по умолчанию процедуру окна,
выполняющую обработку поступающих сообщений Windows. Результат этого
вызова сохраняется в поле Result записи сообщения Msg.
    Вызывается WMActivate и WMSysCommand для установки фокуса
ввода на дочернем окне с описателем FocusChildHandle.
    См. также: TWindow.WMActive, TWindow.WMSysCommand.
    Возвращает идентификатор окна (такой как идентификатор
управляющего элемента).
    Заполняет структуру класса окна, задаваемую AWndClass,
соответствующим TWindow используемыми по умолчанию атрибутами. Поле
стиля устанавливается в значение cs_HRedraw или cs_VRedraw.
Пиктограмма устанавливается в общую пиктограмму, курсор принимает
форму в виде стрелки, а фоновый цвет становится равным фоновому
цвету системного окна. Имя регистрируемого класса можно получить
с помощью вызова GetClassName.
    См. также: TWindowsObject.GetClassName,
TWindowObject.Register, TWindow.Create.
    Служит меткой-заполнителем для поpожденных типов, котоpые
опpеделяют метод Paint. Paint вызывается автоматически в ответ на
запpос от Windows для повтоpного отобpажения содеpжимого окна.
PaintDC следует использовать как контекст дисплея. Он всегда
получается до вызова Paint и освобождается после Paint. Пеpеданная
стpуктуpа pаскpаски PaintInfo содеpжит инфоpмацию непосpедственно
о запpосе на отображение.
    См. также: TWindow.WMPaint.
    Уничтожает текст в поле Attr.Title окна, вызывая StrDispose,
а затем вызывает StrNew для выделения новой копии строки в ATitle
для Attr.Style. Для обновления заголовка окна вызывает функцию
API SetWindowText.
    Устанавливает вновь созданное окно. Если окно является
дочерним окном MDI, то SetupWindow вызывает SetFocus для передачи
фокуса новому окну. Если окно имеет объект прокрутки, SetupWindow
вызывает для установки диапазона полос прокрутки SetBarRange.
    См. также: TScroller.SetBarRange.
    Сохраняет окно в потоке S, вызывая сначала
TWindowsObject.Store, а затем записывая и помещая дополнительные
поля (Attr и Scroller), введенные в TWindow.
    См. также: TWindowsObject.Store.
    Устанавливает FocusChildHandle в описатель дочернего окна,
имеющее в данный момент фокус ввода.
    См. также: TWindow.FocusChildHandle.
    Для окон, которые перехватывают для своих управляющих
элементов сообщения от клавиатуры, реагирует на потерю и получение
окном фокуса путем сохранения описателя дочернего управляющего
элемента, который в данный момент имеет фокус в FocusChildHandle,
и восстанавливает фокус.
    См. также: TWindowsObject.EnableKBDriver.
    Отвечает на сообщение wm_Create вызовом SetupWindow, после
чего вызывает DefWntProc. Поскольку создание окна в ObjectWindows
выполняется иначе чем в Windows, сообщение wm_Create нужно
перехватывать и использовать для установки атрибутов окна.
    См. также: TWindow.SetupWindow.
    Для окон с пpокpуткой на события в гоpизонтальной полосе
пpокpутки окна отвечает вызовом методов HScroll и DefWndProc
объекта прокрутки HScroll.
    См. также: TScroller.HScroll.
    Этот метод при автоматической прокрутки отвечает на нажатие
левой кнопки "мыши", перехватывая весь будущий ввод от "мыши",
пока левая кнопка "мыши" не будет освобождена. Если вы планируете
для обработки нажатий кнопок "мыши" переопределить данный метод,
но все равно собираетесь пользоваться автоматической прокруткой,
убедитесь, что этот метод вызывается из вашего метода
WMLButtonDown.
    Вызывая WMActivate, управляется активизацией MDI Windows.
    См. также: TWindow.WMActivate.
    При получении сообщения wm_Move обновляет координаты Attr.X
и Attr.Y. Если окно имеет вид пиктограммы или минимизировано, то
это сообщение игнорируется.
    Отвечает на сообщение Windows wm_Paint, вызывая метод Paint
оконного объекта. Если окно имеет полосу прокрутки, перед вызовом
Paint WMPaint вызывает BeginView, а после вызова - EndView.
    См. также: TWindow.Paint, TScroller.EndView,
TScroller.BeginView.
    Для окон с пpокpутками на события изменения pазмеpов окна
отвечает вызовом SetPageSize для установки нового pазмеpа окна.
    См. также: TScroller.SetPageSize.
    Если окно обрабатывает ввод с клавиатуры, перед вызовом
DefWndProc для выполнения нормальной обработки проверяет поле
wParam на два значения. Если Msg.wParam равно sc_Mininize (это
означает, что окно будет сжато в пиктограмму), вызывает перед
сжатием в пиктограмму UpdateFocusChild. Если Msg.wParam равно
sc_Restore, WMSysCommand вызывает для восстановления фокуса ввода
перед восстановлением окна FocusChild.
    См. также: TWindow.FocusChild, TWindow.UpdateFocusChild.
Поля
Attr: TWindowAttr;
DefaultProc: TFarProc;
FocusChildHandle: THandle;
Scroller: PScroller;
Методы
Init (часто переопределяется)
constructor Init(AParent: PTWindowsObject; ATitle, PChar);
InitResource
constructor InitResource(AParent: PWindowsObject;
ResourceID: Word);
Load
constructor Load(var S: TStream);
Done (часто переопределяется)
destructor Done; virtual;
Create
function Create: Boolean; virtual;
DefWndProc (никогда не переопределяется)
procedure DefWndProc(var Msg: TMessage); virtual;
FocusChild
procedure FocusChild;
GetID (переопределяется редко)
function GetID: Integer; virtual;
GetWindowClass (часто переопределяется)
procedure GetWindowClass(var AWndClass: TWndClass); virtual;
protected
Paint (часто переопределяется)
procedure Paint(PaintDC: HDC; var PaintInfo: TPaintStruct);
virtual;
SetCaption
procedure SetCaption(ATitle: PChar);
SetupWindow (часто переопределяется)
procedure SetupWindow: virtual;
Store
procedure Store(var S: TStream);
UpdateFocusChild
procedure UpdateFocusChild;
WMActivate (иногда переопределяется)
procedure WMActivate(var Msg: TMessage) virtual
vm_First + vm_Activate;
WMCreate
procedure WMCreate(var Msg: TMessage); virtual
wm_First + wm_Create;
WMHScroll (иногда переопределяется)
procedure WMHScroll(var Msg: TMessage); virtual
wm_First + wm_HScroll;
WMLButtonDown (иногда переопределяется)
procedure WMLButtonDown(var Msg: TMessage); virtual
vmFirst + wm_LButtonDown;
WMMDIActivate
procedure TWindow.WMMDActivate(var Msg: TMessage); virtual
wm_First + wm_MDIActivate;
WMMove
procedure WMMove(var Msg: TMessage); virtual
wm_First + wm_MDIActivate;
WMPaint (переопределяется редко)
procedure WMPaint(var Msg: TMessage); virtual
wm_First + wm_Paint;
WMSize (иногда переопределяется)
procedure WMSize(var Msg: TMessage); virtual
wm_First + wm_Size;
WMSysCommand
procedure WMSysCommand TWindow.WMSysCommand(var Msg:
TMessage); virtual wm_First + wm_SysCommand;