TWindow (модуль OWindows)


TObject
 
Init
Done
Free
TWindowsObject
ChildList Parent
Flags Status
HWindow TransferBuffer
Instance
Init GetChildren
LoadGetClassName
Done GetClient
AddChild GetId
At GetSiblingPtr
Canclose GetWindowClass
ChildWithId IndexOf
CloseWindow IsFlagSet
CMExit Next
Create Previous
CreateChildren PutChildPtr
CreateMemoryDC PutChildren
DefChildProc PutSiblingPtr
DefCommandProc Register
DefNotificationProc RemoveChild
DefWndProc SetFlags
Destroy SetupWindow
Disable Show
DisableAutoCreate Store
DisableTransfer Transfer
DispatchScroll TransferData
Enable WMActivate
EnableAutoCreate WMClose
EnableKBHandler WMCommand
EnableTransfer WMDestroy
FirstThat WMNScroll
Focus WMNCDestroy
ForEach WMNQueryEndSession
GetChildPtr WMVScroll
TWindow
Attr
DefaultProc
Scrol[ler
FocusChildHandle
Init
InitResource
Load
Done
Create
DefWndProc
FocusChild
GetId
GetWindowClass
Paint
SetCaption
SetupWindow
Store
UpdateFocusChild
WMActivate
WMHScroll
WMLButtonDown
WMMDIActivate
WMMove
WMPaint
WMSize
WMSysCommand
WMVScroll

    TWindow определяет фундаментальное поведение для всех окон и объектов управляющих элементов. Экземпляры объектов TWindow - это просто общие окна, но они могут включать в себя меню, курсоры и пиктограммы.

Поля


Attr (чтение/запись)

     Attr: TWindowAttr;

    Attr содеpжит запись TWindowAttr, котоpая опpеделяет атpибуты создания окон - хаpактеpистики, влияющие на создание соответствующего интеpфейсного элемента окна. К ним относятся текст, стиль, pасшиpенный стиль, положение и pазмеp, описатель окна и идентификатоp управляющего элемента. Эти атрибуты устанавливаются по умолчанию конструктором Init, но могут переопределяться в конструкторах наследующих типов.

    См. также: тип TWindowAttr.

DefaultProc (только чтение)

     DefaultProc: TFarProc;

    DefaultProc содержит адрес используемой по умолчанию процедуры окна, которая определяет применяемую по умолчанию обработку сообщений Windows.

FocusChildHandle (только чтение)

     FocusChildHandle: THandle;

    FocusChildHandle cодеpжит описатель дочеpнего окна для данного окна, котоpое было активно в момент, когда окно активизиpовалось в последний pаз. Windows не отслеживает автоматически фокус дочерних окон, так что когда вы вновь активизируете окно или восстанавливаете его из пиктограммы, ObjectWindows обеспечивает восстановление фокуса для того дочернего окна, где он бы в последний раз.

    С данным полем вы можете работать с помощью методов FocusChild и UpdateFocusChild.

Scroller (чтение/запись)

     Scroller: PScroller;

    Scroller содеpжит указатель на объект TScroller, котоpый используется для организации прокрутки изображения. В конструкторе TWindow создается экземпляр объекта Scroller и устанавливается элемент прокрутки.

Методы


    Ниже перечисляются методы, содержащиеся в данном объекте.

Init (часто переопределяется)


     constructor Init(AParent: PTWindowsObject; ATitle, PChar);

    Создает объект окна с порождающим окном, пеpедаваемым в AParent и соответствующим текстом (заголовком для окон), пеpедаваемым в ATitle. Для основных окон, не имеющих порождающих окон AParent должно иметь значение nil. Поле Attr.Style объекта устанавливается в ws_OverlappedWindow (если окно не является порожденным окном MDI - в этом случае оно устанавливается в ws_ClipSiblings). Устанавливает позицию и поля в Attr в их соответствующие используемые по умолчанию значения для образования перекрывающихся и всплывающих окон.

    В конструкторе объекта, производного от TWindow (или в любой момент перед созданием интерфейсного элемента), используемые по умолчанию значения структуры Attr можно установить по-другому. Конструктор производного от TWindow объекта может также устанавливать Scroller (по умолчанию nil) в экземпляр объекта TScroller.

InitResource


     constructor InitResource(AParent: PWindowsObject;
                              ResourceID: Word);

    На основе определения ресурса строит интерфейсный объект, связанный с элементом экрана (обычно управляющим элементов). Для построения объекта вызывает TWindowsObject.Init.

    См. также: TWindowsObject.Init.

Load


     constructor Load(var S: TStream);

    Строит и загружает окно из потока S, вызывая сначала TWindowsObjecrt.Load, а затем считывая и получая дополнительные поля (Attr и Scroller), введенные в TWindow.

    См. также: TWindowsObject.Load.

Done (часто переопределяется)


     destructor Done; virtual;

    Перед вызовом для уничтожения всего объекта деструктора Done, наследуемого из TWindowsObject, уничтожает объект TScroller в Scroller (при его наличии).

Create


     function Create: Boolean; virtual;

    Если объект не был построен с помощью InitResource (в этом случае экранный элемент уже существует), создает для оконного объекта соответствующий экранный элемент. Если класс окна еще не зарегистрирован, Create для регистрации вызывает Register. Затем Create создает окно и вызывает метод SetupWindow, который вы можете определить для инициализации вновь созданного окна, обычно путем создания дочерних окон и изображения графики или текста. В случае успешного выполнения Create возвращает значение True. В случае неуспешного выполнения возвращается False, и вызывается Error.

    Обычно функция Create никогда не вызывается непосредственно. Create вызывается методом TApplication.MakeWindow, который выполняет сначала проверку наличия памяти.

    См. также: TWindowsObject.Register, TApplication.MakeWindow, TWindowsObject.SetupWindow.

DefWndProc (никогда не переопределяется)


     procedure DefWndProc(var Msg: TMessage); virtual;

    Вызывает используемую по умолчанию процедуру окна, выполняющую обработку поступающих сообщений Windows. Результат этого вызова сохраняется в поле Result записи сообщения Msg.

FocusChild


     procedure FocusChild;

    Вызывается WMActivate и WMSysCommand для установки фокуса ввода на дочернем окне с описателем FocusChildHandle.

    См. также: TWindow.WMActive, TWindow.WMSysCommand.

GetID (переопределяется редко)


     function GetID: Integer; virtual;

    Возвращает идентификатор окна (такой как идентификатор управляющего элемента).

GetWindowClass (часто переопределяется)


     procedure GetWindowClass(var AWndClass: TWndClass); virtual;
           protected

    Заполняет структуру класса окна, задаваемую AWndClass, соответствующим TWindow используемыми по умолчанию атрибутами. Поле стиля устанавливается в значение cs_HRedraw или cs_VRedraw. Пиктограмма устанавливается в общую пиктограмму, курсор принимает форму в виде стрелки, а фоновый цвет становится равным фоновому цвету системного окна. Имя регистрируемого класса можно получить с помощью вызова GetClassName.

    См. также: TWindowsObject.GetClassName, TWindowObject.Register, TWindow.Create.

Paint (часто переопределяется)


     
     procedure Paint(PaintDC: HDC; var PaintInfo: TPaintStruct);
                     virtual;

    Служит меткой-заполнителем для по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.

SetCaption


     
     procedure SetCaption(ATitle: PChar);

    Уничтожает текст в поле Attr.Title окна, вызывая StrDispose, а затем вызывает StrNew для выделения новой копии строки в ATitle для Attr.Style. Для обновления заголовка окна вызывает функцию API SetWindowText.

SetupWindow (часто переопределяется)


     procedure SetupWindow: virtual;

    Устанавливает вновь созданное окно. Если окно является дочерним окном MDI, то SetupWindow вызывает SetFocus для передачи фокуса новому окну. Если окно имеет объект прокрутки, SetupWindow вызывает для установки диапазона полос прокрутки SetBarRange.

    См. также: TScroller.SetBarRange.

Store


     
     procedure Store(var S: TStream);

    Сохраняет окно в потоке S, вызывая сначала TWindowsObject.Store, а затем записывая и помещая дополнительные поля (Attr и Scroller), введенные в TWindow.

    См. также: TWindowsObject.Store.

UpdateFocusChild


     
     procedure UpdateFocusChild;

    Устанавливает FocusChildHandle в описатель дочернего окна, имеющее в данный момент фокус ввода.

    См. также: TWindow.FocusChildHandle.

WMActivate (иногда переопределяется)


     procedure WMActivate(var Msg: TMessage) virtual
                          vm_First + vm_Activate;

    Для окон, которые перехватывают для своих управляющих элементов сообщения от клавиатуры, реагирует на потерю и получение окном фокуса путем сохранения описателя дочернего управляющего элемента, который в данный момент имеет фокус в FocusChildHandle, и восстанавливает фокус.

    См. также: TWindowsObject.EnableKBDriver.

WMCreate


     procedure WMCreate(var Msg: TMessage); virtual
                        wm_First + wm_Create;

    Отвечает на сообщение wm_Create вызовом SetupWindow, после чего вызывает DefWntProc. Поскольку создание окна в ObjectWindows выполняется иначе чем в Windows, сообщение wm_Create нужно перехватывать и использовать для установки атрибутов окна.

    См. также: TWindow.SetupWindow.

WMHScroll (иногда переопределяется)


     procedure WMHScroll(var Msg: TMessage); virtual
                         wm_First + wm_HScroll;

    Для окон с пpокpуткой на события в гоpизонтальной полосе пpокpутки окна отвечает вызовом методов HScroll и DefWndProc объекта прокрутки HScroll.

    См. также: TScroller.HScroll.

WMLButtonDown (иногда переопределяется)


     procedure WMLButtonDown(var Msg: TMessage); virtual
                             vmFirst + wm_LButtonDown;

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

WMMDIActivate


     procedure TWindow.WMMDActivate(var Msg: TMessage); virtual
                                    wm_First + wm_MDIActivate;

    Вызывая WMActivate, управляется активизацией MDI Windows.

    См. также: TWindow.WMActivate.

WMMove


     procedure WMMove(var Msg: TMessage); virtual
                      wm_First + wm_MDIActivate;

    При получении сообщения wm_Move обновляет координаты Attr.X и Attr.Y. Если окно имеет вид пиктограммы или минимизировано, то это сообщение игнорируется.

WMPaint (переопределяется редко)


     procedure WMPaint(var Msg: TMessage); virtual
                       wm_First + wm_Paint;

    Отвечает на сообщение Windows wm_Paint, вызывая метод Paint оконного объекта. Если окно имеет полосу прокрутки, перед вызовом Paint WMPaint вызывает BeginView, а после вызова - EndView.

    См. также: TWindow.Paint, TScroller.EndView, TScroller.BeginView.

WMSize (иногда переопределяется)


     procedure WMSize(var Msg: TMessage); virtual
                      wm_First + wm_Size;

    Для окон с пpокpутками на события изменения pазмеpов окна отвечает вызовом SetPageSize для установки нового pазмеpа окна.

    См. также: TScroller.SetPageSize.

WMSysCommand


     procedure WMSysCommand TWindow.WMSysCommand(var Msg:
                     TMessage); virtual wm_First + wm_SysCommand;

    Если окно обрабатывает ввод с клавиатуры, перед вызовом DefWndProc для выполнения нормальной обработки проверяет поле wParam на два значения. Если Msg.wParam равно sc_Mininize (это означает, что окно будет сжато в пиктограмму), вызывает перед сжатием в пиктограмму UpdateFocusChild. Если Msg.wParam равно sc_Restore, WMSysCommand вызывает для восстановления фокуса ввода перед восстановлением окна FocusChild.

    См. также: TWindow.FocusChild, TWindow.UpdateFocusChild.

WMVScroll (иногда переопределяется)


     procedure WMVScroll(var Msg: TMessage); virtual
                         wm_First + wm_VScroll;

    Для окон с объектами прокрутки отвечает на события вертикальной полосы прокрутки вызовом метода DefWndProc объекта VScroll.

    См. также: TScroll.DefWndProc.

Тип TWindowAttr (модуль OWindows)


    Описание:

     TWindowAttr = record
           Title: PChar;
           Style: Longint;
           ExStyle: Longint;
           X, Y, W, H: Integer;
           Param: Pointer;
           case Integer of
              0: (Menu: HMenu);     { обработка меню окна или ...
              1: Id: Integer);      { идентификатор управляющего
                                         элемента }
     end;

    Назначение: В записях TWindowAtt определяет свои атрибуты объекта TWindow.

    См. также: TWindowAttr.