topic "Ctrl";
[i448;a25;kKO9;2 $$1,0#37138531426314131252341829483380:class]
[l288;2 $$2,2#27521748481378242620020725143825:desc]
[0 $$3,0#96390100711032703541132217272105:end]
[H6;0 $$4,0#05600065144404261032431302351956:begin]
[i448;a25;kKO9;2 $$5,0#37138531426314131252341829483370:item]
[l288;a4;*@5;1 $$6,6#70004532496200323422659154056402:requirement]
[l288;i1121;b17;O9;~~~.1408;2 $$7,0#10431211400427159095818037425705:param]
[i448;b42;O9;2 $$8,8#61672508125594000341940100500538:tparam]
[b42;2 $$9,9#13035079074754324216151401829390:normal]
[2 $$0,0#00000000000000000000000000000000:Default]
[{_}%EN-US 
[ {{10000@(113.42.0) [s0; [*@7;4 Ctrl]]}}&]
[s3;%- &]
[s1;:Ctrl`:`:class:%- [@(0.0.255)3 class][3 _][*3 Ctrl][3 _:_][@(0.0.255)3 public][3 _][*@3;3 Pte][3 <
][*3 Ctrl][3 >_]&]
[s9; (Derivation from Pte<Ctrl> allows Ctrl to be pointed to by Ptr<Ctrl>&]
[s0; &]
[s0; This the base class of GUI widgets hierarchy (that is why U`+`+ 
widgets are also named `"Ctrls`").&]
[s3; &]
[s0;%- &]
[ {{10000F(128)G(128)@1 [s0; [* Public Member List]]}}&]
[s3; &]
[s0;%- enum_[* PlacementConstants]&]
[s2;b17;a17; Constants used in logical coordinates.&]
[s7;i1120;a17;:Ctrl`:`:CENTER: [%-*C@3 CENTER]-|Center alignment.&]
[s7;i1120;a17;:Ctrl`:`:LEFT: [%-*C@3 LEFT]-|Left alignment.&]
[s7;i1120;a17;:Ctrl`:`:RIGHT: [%-*C@3 RIGHT]-|Right alignment.&]
[s7;i1120;a17;:Ctrl`:`:TOP: [%-*C@3 TOP]-|Equal to LEFT (better name 
for vertical coordinate).&]
[s7;i1120;a17;:Ctrl`:`:BOTTOM: [%-*C@3 BOTTOM]-|Equal to RIGHT (better 
name for vertical coordinate)&]
[s7;i1120;a17;:Ctrl`:`:SIZE: [%-*C@3 SIZE]-|Size alignment.&]
[s7;i1120;a17;:Ctrl`:`:MINSIZE: [%-*C@3 MINSIZE]-|Value is determined 
using GetMinSize.&]
[s7;i1120;a17;:Ctrl`:`:MAXSIZE: [%-*C@3 MAXSIZE]-|Value is determined 
using GetMaxSize.&]
[s7;i1120;a17;:Ctrl`:`:STDSIZE: [%-*C@3 STDSIZE]-|Value is determined 
using Get&]
[s3; &]
[s4; &]
[s0;%- enum_[* StateReason]&]
[s2;b17;a17; Arguments of State virtual method.&]
[s7;i1120;a17;:Ctrl`:`:FOCUS: [%-*C@3 FOCUS]-|Ctrl got/lost focus.&]
[s7;i1120;a17;:Ctrl`:`:ACTIVATE: [%-*C@3 ACTIVATE]-|Ctrl was activated.&]
[s7;i1120;a17;:Ctrl`:`:DEACTIVATE: [%-*C@3 DEACTIVATE]-|Ctrl was deactivated.&]
[s7;i1120;a17;:Ctrl`:`:SHOW: [%-*C@3 SHOW]-|Ctrl visibility changed.&]
[s7;i1120;a17;:Ctrl`:`:ENABLE: [%-*C@3 ENABLE]-|Ctrl was enabled/disable.&]
[s7;i1120;a17;:Ctrl`:`:EDITABLE: [%-*C@3 EDITABLE]-|Ctrl editable status 
changed.&]
[s7;i1120;a17;:Ctrl`:`:OPEN: [%-*C@3 OPEN]-|Ctrl was open (its top`-level 
Ctrl was open on screen).&]
[s7;i1120;a17;:Ctrl`:`:CLOSE: [%-*C@3 CLOSE]-|Ctrl was closed (its top`-level 
Ctrl was closed).&]
[s3; &]
[s4; &]
[s0;%- enum_[* MouseEvents]&]
[s2;b17;a17; Constants that make up [*/ event] argument of [*/ MouseEvent] 
and [*/ FrameMouseEvent] virtual methods. Value is combination 
of button and action bit fields.&]
[s2;b17;a17; &]
[s0;l160; [* Field masks]&]
[s7;i1120;a17;:Ctrl`:`:BUTTON: [%-*C@3 BUTTON]-|Mask for button field.&]
[s7;i1120;a17;:Ctrl`:`:ACTION: [%-*C@3 ACTION]-|Mask for action field. 
&]
[s0; &]
[s0;l160; [* Actions]&]
[s7;i1120;a17;:Ctrl`:`:MOUSEENTER: [%-*C@3 MOUSEENTER]-|Mouse entered 
Ctrl.&]
[s7;i1120;a17;:Ctrl`:`:MOUSEMOVE: [%-*C@3 MOUSEMOVE]-|Mouse moved over 
Ctrl.&]
[s7;i1120;a17;:Ctrl`:`:MOUSELEAVE: [%-*C@3 MOUSELEAVE]-|Mouse left Ctrl.&]
[s7;i1120;a17;:Ctrl`:`:CURSORIMAGE: [%-*C@3 CURSORIMAGE]-|Cursor image 
has to be determined (method should respond with image).&]
[s7;i1120;a17;:Ctrl`:`:MOUSEWHEEL: [%-*C@3 MOUSEWHEEL]-|Mouse wheel 
rotated.&]
[s7;i1120;a17;:Ctrl`:`:DOWN: [%-*C@3 DOWN]-|Mouse button was pressed.&]
[s7;i1120;a17;:Ctrl`:`:UP: [%-*C@3 UP]-|Mouse button was released.&]
[s7;i1120;a17;:Ctrl`:`:DOUBLE: [%-*C@3 DOUBLE]-|Mouse button was double`-clicked.&]
[s7;i1120;a17;:Ctrl`:`:REPEAT: [%-*C@3 REPEAT]-|When mouse button is 
pressed for a while, U`+`+ imitates keyboard autorepeat sending 
this message.&]
[s0;l160; [* Buttons] &]
[s7;i1120;a17; [%-*C@3 LEFT]-|Left button. (This constant is not defined 
in MouseEvents, instead LEFT from Placements Constants is used).&]
[s7;i1120;a17; [%-*C@3 RIGHT]-|Left button. (This constant is not defined 
in MouseEvents, instead LEFT from Placements Constants is used).&]
[s0;l160; [* Combinations]&]
[s7;i1120;a17;:Ctrl`:`:LEFTDOWN: [%-*C@3 LEFTDOWN]-|Left button pressed.&]
[s7;i1120;a17;:Ctrl`:`:LEFTDOUBLE: [%-*C@3 LEFTDOUBLE]-|Left button 
double pressed.&]
[s7;i1120;a17;:Ctrl`:`:LEFTREPEAT: [%-*C@3 LEFTREPEAT]-|Left button 
autorepeat.&]
[s7;i1120;a17;:Ctrl`:`:LEFTUP: [%-*C@3 LEFTUP]-|Left button released.&]
[s7;i1120;a17;:Ctrl`:`:RIGHTDOWN: [%-*C@3 RIGHTDOWN]-|Right button pressed.&]
[s7;i1120;a17;:Ctrl`:`:RIGHTDOUBLE: [%-*C@3 RIGHTDOUBLE]-|Right button 
double pressed.&]
[s7;i1120;a17;:Ctrl`:`:RIGHTREPEAT: [%-*C@3 RIGHTREPEAT]-|Right button 
autorepeat.&]
[s7;i1120;a17;:Ctrl`:`:RIGHTUP: [%-*C@3 RIGHTUP]-|Right button released.&]
[s3; &]
[s4; &]
[s0;%- enum_`{_[*@3 NOBACKPAINT], [*@3 FULLBACKPAINT], [*@3 TRANSPARENTBACKPAINT], 
[*@3 EXCLUDEPAINT]_`}&]
[s2;b17;a17; These constants are parameters of BackPaint method. 
They determine back`-plane drawing style.&]
[s7;i1120;a17;:Ctrl`:`:NOBACKPAINT: [%-*C@3 NOBACKPAINT]-|No backpaint 
is used.&]
[s7;i1120;a17;:Ctrl`:`:FULLBACKPAINT: [%-*C@3 FULLBACKPAINT]-|Whole 
area of Ctrl is backpainted.&]
[s7;i1120;a17;:Ctrl`:`:TRANSPARENTBACKPAINT: [%-*C@3 TRANSPARENTBACKPAINT]-|Only 
transparent child Ctrls are backpainted.&]
[s7;i1120;a17;:Ctrl`:`:EXCLUDEPAINT: [%-*C@3 EXCLUDEPAINT]-|Ctrl is 
not painted. This is special case for specific system related 
situations (like OLE control painted by regular Windows routine).&]
[s3; &]
[s4; &]
[s5;%- [*@(64) typedef_][*@(0.0.255) bool][*@(64) _(`*][* MouseHook][*@(64) )(Ctrl_`*ctrl, 
][*@(0.0.255) bool][*@(64) _inframe, ][*@(0.0.255) int][*@(64) _event, 
Point_p, ][*@(0.0.255) int][*@(64) _zdelta, dword_keyflags)]&]
[s2;b17;a17; Type for hooking mouse events across all Ctrls.&]
[s3; &]
[s4; &]
[s5;%- [*@(64) typedef_][*@(0.0.255) bool][*@(64) _(`*][* KeyHook][*@(64) )(Ctrl_`*ctrl, 
dword_key, ][*@(0.0.255) int][*@(64) _count)]&]
[s2;b17;a17; Type for hooking keyboard events across all Ctrls.&]
[s3; &]
[s4; &]
[s5;%- [*@(64) typedef_][*@(0.0.255) bool][*@(64) _(`*][* StateHook][*@(64) )(Ctrl_`*ctrl, 
][*@(0.0.255) int][*@(64) _reason)]&]
[s2;b17;a17; Type for hooking state changes across all Ctrls.&]
[s0; &]
[s4;%- &]
[s5;:Ctrl`:`:PosLeft`(int`,int`):%- [@(0.0.255) static] [_^Ctrl`:`:Logc^ Logc]_[* PosLeft](
[@(0.0.255) int]_[*@3 pos], [@(0.0.255) int]_[*@3 size])&]
[s2;b17;a17; Creates left (or top) aligned logical coordinate (Logc).&]
[s7;i1120;a17; [%-*C@3 pos]-|Distance between left margin and left margin 
of parent`'s view.&]
[s7;i1120;a17; [%-*C@3 size]-|Size.&]
[s7;i1120;a17; [*/ Return value]-|Logical coordinate.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:PosRight`(int`,int`):%- [@(0.0.255) static] [_^Ctrl`:`:Logc^ Logc]_[* PosRight
]([@(0.0.255) int]_[*@3 pos], [@(0.0.255) int]_[*@3 size])&]
[s2;b17;a17; Creates right (or bottom) aligned logical coordinate 
(Logc).&]
[s7;i1120;a17; [%-*C@3 pos]-|Distance between right margin and right 
margin of parent`'s view.&]
[s7;i1120;a17; [%-*C@3 size]-|Size.&]
[s7;i1120;a17; [*/ Return value]-|Logical coordinate.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:PosTop`(int`,int`):%- [@(0.0.255) static] [_^`:`:Ctrl`:`:Logc^ Logc]_[* PosTop
]([@(0.0.255) int]_[*@3 pos], [@(0.0.255) int]_[*@3 size])&]
[s2;b17;a17; Equal to PosLeft(pos, size).&]
[s7;i1120;a17; [%-*C@3 pos]-|Distance between top margin and top margin 
of parent`'s view.&]
[s7;i1120;a17; [%-*C@3 size]-|Size.&]
[s7;i1120;a17; [*/ Return value]-|Logical coordinate.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:PosBottom`(int`,int`):%- [@(0.0.255) static] [_^`:`:Ctrl`:`:Logc^ Logc]_[* Pos
Bottom]([@(0.0.255) int]_[*@3 pos], [@(0.0.255) int]_[*@3 size])&]
[s2;b17;a17; Equal to PosRight(pos, size).&]
[s7;i1120;a17; [%-*C@3 pos]-|Distance between bottom margin and bottom 
margin of parent`'s view.&]
[s7;i1120;a17; [%-*C@3 size]-|Size.&]
[s7;i1120;a17; [*/ Return value]-|Logical coordinate.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:PosSize`(int`,int`):%- [@(0.0.255) static] [_^`:`:Ctrl`:`:Logc^ Logc]_[* PosSi
ze]([@(0.0.255) int]_[*@3 lpos], [@(0.0.255) int]_[*@3 rpos])&]
[s2;b17;a17; Creates logical coordinate where distances between margins 
and parent`'s view margins are fixed and size of Ctrl is variable 
(depends of parent`'s view size).&]
[s7;i1120;a17; [%-*C@3 lpos]-|Distance between left/top margin and left/top 
margin of parent`'s view.&]
[s7;i1120;a17; [%-*C@3 rpos]-|Distance between right/bottom margin and 
right/bottom margin of parent`'s view.&]
[s7;i1120;a17; [*/ Return value]-|Logical coordinate.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:PosCenter`(int`,int`):%- [@(0.0.255) static] [_^`:`:Ctrl`:`:Logc^ Logc]_[* Pos
Center]([@(0.0.255) int]_[*@3 size], [@(0.0.255) int]_[*@3 offset])&]
[s2;b17;a17; Creates centered logical coordinate, where Ctrl is placed 
in specified distance from center of parent`'s view. &]
[s7;i1120;a17; [%-*C@3 size]-|Size.&]
[s7;i1120;a17; [%-*C@3 offset]-|Offset from center.&]
[s7;i1120;a17; [*/ Return value]-|Logical coordinate.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:PosCenter`(int`):%- [@(0.0.255) static] [_^`:`:Ctrl`:`:Logc^ Logc]_[* PosCente
r]([@(0.0.255) int]_[*@3 size])&]
[s2;b17;a17; Equal to PosCenter(size, 0).&]
[s7;i1120;a17; [%-*C@3 size]-|Size.&]
[s7;i1120;a17; [*/ Return value]-|Logical coordinate.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetTopCtrls`(`):%- [@(0.0.255) static] [_^`:`:Vector^ Vector][@(0.0.255) <]Ctr
l_`*>_[* GetTopCtrls]()&]
[s2;b17;a17; Returns all opened top`-level Ctrls of process. Top`-level 
Ctrls are those without parent (GetParent() `=`= NULL) `- TopWindow 
Ctrls and pop`-up Ctrls.&]
[s7;i1120;a17; [*/ Return value]-|Vector of all top Ctrls.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetTopWindows`(`):%- [@(0.0.255) static] [_^`:`:Vector^ Vector][@(0.0.255) <]C
trl_`*>_[* GetTopWindows]()&]
[s2;b17;a17; Returns all opened TopWindows (that is, instances of 
TopWindow class or classes derived from TopWindow) of process. 
The difference between GetTopWindows and GetTopCtrls is that 
GetTopCtrls returns pop`-ups too. &]
[s7;i1120;a17; [*/ Return value]-|Vector of all TopWindows.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:CloseTopCtrls`(`):%- [@(0.0.255) static] [@(0.0.255) void]_[* CloseTopCtrls]()
&]
[s2;b17;a17; Closes all top`-level Ctrls.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:InstallMouseHook`(Ctrl`:`:MouseHook`):%- [@(0.0.255) static] 
[@(0.0.255) void]_[* InstallMouseHook]([_^`:`:Ctrl`:`:MouseHook^ MouseHook]_[*@3 hook])&]
[s2;b17;a17; Installs mouse hook `- a routine that receives all mouse 
input of application before it gets processed by Ctrls. You can 
install more mouse hooks. Mouse hook routine should return true 
to indicate the end of processing (and event propagation).&]
[s7;i1120;a17; [%-*C@3 hook]-|Pointer to hook routine.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:DeinstallMouseHook`(Ctrl`:`:MouseHook`):%- [@(0.0.255) static] 
[@(0.0.255) void]_[* DeinstallMouseHook]([_^`:`:Ctrl`:`:MouseHook^ MouseHook]_[*@3 hook])
&]
[s2;b17;a17; Uninstalls previously installed mouse hook.&]
[s7;i1120;a17; [%-*C@3 hook]-|Pointer to hook routine.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:InstallKeyHook`(Ctrl`:`:KeyHook`):%- [@(0.0.255) static] 
[@(0.0.255) void]_[* InstallKeyHook]([_^`:`:Ctrl`:`:KeyHook^ KeyHook]_[*@3 hook])&]
[s2;b17;a17; Installs keyboard hook `- a routine that receives all 
keyboard input of application before it gets processed by Ctrls. 
You can install more than one keyboard hooks. Keyboard hook routine 
should return true to indicate the end of processing (and event 
propagation).&]
[s7;i1120;a17; [%-*C@3 hook]-|Pointer to hook routine.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:DeinstallKeyHook`(Ctrl`:`:KeyHook`):%- [@(0.0.255) static] 
[@(0.0.255) void]_[* DeinstallKeyHook]([_^`:`:Ctrl`:`:KeyHook^ KeyHook]_[*@3 hook])&]
[s2;b17;a17; Uninstalls previously installed keyboard hook.&]
[s7;i1120;a17; [%-*C@3 hook]-|Pointer to hook routine.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:InstallStateHook`(Ctrl`:`:StateHook`):%- [@(0.0.255) static] 
[@(0.0.255) void]_[* InstallStateHook]([_^`:`:Ctrl`:`:StateHook^ StateHook]_[*@3 hook])&]
[s2;b17;a17; Installs state hook `- a routine that receives all state 
changes of any Ctrls.&]
[s7;i1120;a17; [%-*C@3 hook]-|Pointer to hook routine.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:DeinstallStateHook`(Ctrl`:`:StateHook`):%- [@(0.0.255) static] 
[@(0.0.255) void]_[* DeinstallStateHook]([_^`:`:Ctrl`:`:StateHook^ StateHook]_[*@3 hook])
&]
[s2;b17;a17; Deinstalls previously installed state hook.&]
[s7;i1120;a17; [%-*C@3 hook]-|Pointer to hook routine.&]
[s3;%- &]
[s4;%- &]
[s5;:Upp`:`:Ctrl`:`:InstallPaintHook`(PaintHook`):%- [@(0.0.255) static] 
[@(0.0.255) void] [* InstallPaintHook](PaintHook [*@3 hook])&]
[s2; Installs [%-*@3 hook] `- gets called each time after any top`-level 
window is repainted.&]
[s3;%- &]
[s4;%- &]
[s5;:Upp`:`:Ctrl`:`:DeinstallPaintHook`(PaintHook`):%- [@(0.0.255) static] 
[@(0.0.255) void] [* DeinstallPaintHook](PaintHook [*@3 hook])&]
[s2; Deinstalls previously installed paint [%-*@3 hook].&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:Paint`(Draw`&`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* Paint]([_^`:`:Draw^ D
raw][@(0.0.255) `&]_[*@3 draw])&]
[s2;b17;a17; This method is called when Ctrl`'s view area is about 
to be repainted.&]
[s7;i1120;a17; [%-*C@3 draw]-|Target of draw operations.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:CancelMode`(`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* CancelMode]()&]
[s2;b17;a17; This method is called by U`+`+ core in situations when 
internal state of Ctrl that represents ongoing user action is 
about to be cleared to default. Typical example of such action 
is state of Button that is pushed by mouse click `- if the pushed 
state is internally recorded in Button, it should by cleared 
by this method. Examples of situations when this method is called 
by framework is removing Ctrl from its parent or releasing mouse 
capture.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:Activate`(`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* Activate]()&]
[s2;b17;a17; This method is called when Ctrl is top`-level and is 
activated `- it or some of its child Ctrls receives keyboard 
focus (activation usually has other signs as bringing window 
foreground or changing its caption).&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:Deactivate`(`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* Deactivate]()&]
[s2;b17;a17; This method is called when Ctrl is top`-level and is 
deactivated `- focus has gone outside of Ctrl and its child Ctrls.&]
[s3; &]
[s4;%- &]
[s5;:Upp`:`:Ctrl`:`:DeactivateBy`(Upp`:`:Ctrl`*`):%- [@(0.0.255) virtual] 
[@(0.0.255) void]_[* DeactivateBy]([_^Upp`:`:Ctrl^ Ctrl]_`*[*@3 new`_focus])&]
[s2; Similar to Deactivate without parameter, but if a widget that 
caused deactivation by getting a focus is part of the same appliaction, 
[%-*@3 new`_focus] contains a pointer to it. If deactivation is 
caused by switching to another application, this parameter is 
NULL. Both variants of Deactivate are called, the variant with 
paremeter is called first.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:FrameMouseEvent`(int`,Point`,int`,dword`):%- [@(0.0.255) virtual] 
[_^`:`:Image^ Image]_[* FrameMouseEvent]([@(0.0.255) int]_[*@3 event], 
[_^`:`:Point^ Point]_[*@3 p], [@(0.0.255) int]_[*@3 zdelta], [_^`:`:dword^ dword]_[*@3 keyfla
gs])&]
[s2;b17;a17; This method is called when mouse event happens in frame 
area of Ctrl not containing any child Ctrls. Default implementation 
does nothing and returns Image`::Arrow().&]
[s7;i1120;a17; [%-*C@3 event]-|Type of event define by [^topic`:`/`/CtrlCore`/src`/Ctrl`$en`-us`#`:`:Ctrl`:`:enum MouseEvents `{ BUTTON`, ACTION`, MOUSEENTER`, MOUSEMOVE`, MOUSELEAVE`, CURSORIMAGE`, MOUSEWHEEL`, DOWN`, UP`, DOUBLE`, REPEAT`, LEFTDOWN`, LEFTDOUBLE`, LEFTREPEAT`, LEFTUP`, RIGHTDOWN`, RIGHTDOUBLE`, RIGHTREPEAT`, RIGHTUP `}^ M
ouseEvents] enum.&]
[s7;i1120;a17; [%-*C@3 p]-|Position of mouse cursor in frame coordinates.&]
[s7;i1120;a17; [%-*C@3 zdelta]-|Mouse wheel rotation delta (if event 
is MOUSEWHEEL).&]
[s7;i1120;a17; [%-*C@3 keyflags]-|Combination of key flags for Shift, 
Ctrl and Alt keys.&]
[s7;i1120;a17; [*/ Return value]-|If event is MOUSEIMAGE, method should 
return Image to be displayed as mouse cursor.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:MouseEvent`(int`,Point`,int`,dword`):%- [@(0.0.255) virtual] 
[_^`:`:Image^ Image]_[* MouseEvent]([@(0.0.255) int]_[*@3 event], [_^`:`:Point^ Point]_[*@3 p
], [@(0.0.255) int]_[*@3 zdelta], [_^`:`:dword^ dword]_[*@3 keyflags])&]
[s2;b17;a17; This method is called when mouse event happens in view 
area of Ctrl not containing any child Ctrls. Default implementation 
calls specific mouse event methods based on event parameter.&]
[s7;i1120;a17; [%-*C@3 event]-|Type of event define by [^topic`:`/`/CtrlCore`/src`/Ctrl`$en`-us`#`:`:Ctrl`:`:enum MouseEvents `{ BUTTON`, ACTION`, MOUSEENTER`, MOUSEMOVE`, MOUSELEAVE`, CURSORIMAGE`, MOUSEWHEEL`, DOWN`, UP`, DOUBLE`, REPEAT`, LEFTDOWN`, LEFTDOUBLE`, LEFTREPEAT`, LEFTUP`, RIGHTDOWN`, RIGHTDOUBLE`, RIGHTREPEAT`, RIGHTUP `}^ M
ouseEvents] enum.&]
[s7;i1120;a17; [%-*C@3 p]-|Position of mouse cursor in view coordinates.&]
[s7;i1120;a17; [%-*C@3 zdelta]-|Mouse wheel rotation delta (if event 
is MOUSEWHEEL).&]
[s7;i1120;a17; [%-*C@3 keyflags]-|Combination of key flags for Shift, 
Ctrl and Alt keys.&]
[s7;i1120;a17; [*/ Return value]-|If event is MOUSEIMAGE, method should 
return Image to be displayed as mouse cursor.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:MouseEnter`(Point`,dword`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* MouseE
nter]([_^`:`:Point^ Point]_[*@3 p], [_^`:`:dword^ dword]_[*@3 keyflags])&]
[s2;b17;a17; This method is called by default implementation of MouseEvent 
when mouse cursor enters the view area of Ctrl.&]
[s7;i1120;a17; [%-*C@3 p]-|Point of mouse cursor in view coordinates.&]
[s7;i1120;a17; [%-*C@3 keyflags]-|Combination of key flags for Shift, 
Ctrl and Alt keys.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:MouseMove`(Point`,dword`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* MouseMo
ve]([_^`:`:Point^ Point]_[*@3 p], [_^`:`:dword^ dword]_[*@3 keyflags])&]
[s2;b17;a17; This method is called by default implementation of MouseEvent 
when mouse cursor hovers above view area of Ctrl.&]
[s7;i1120;a17; [%-*C@3 p]-|Position of mouse cursor in view coordinates.&]
[s7;i1120;a17; [%-*C@3 keyflags]-|Combination of key flags for Shift, 
Ctrl and Alt keys.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:LeftDown`(Point`,dword`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* LeftDown
]([_^`:`:Point^ Point]_[*@3 p], [_^`:`:dword^ dword]_[*@3 keyflags])&]
[s2;b17;a17; This method is called by default implementation of MouseEvent 
when mouse left button is pressed.&]
[s7;i1120;a17; [%-*C@3 p]-|Position of mouse cursor in view coordinates.&]
[s7;i1120;a17; [%-*C@3 keyflags]-|Combination of key flags for Shift, 
Ctrl and Alt keys.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:LeftDouble`(Point`,dword`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* LeftDo
uble]([_^`:`:Point^ Point]_[*@3 p], [_^`:`:dword^ dword]_[*@3 keyflags])&]
[s2;b17;a17; This method is called by default implementation of MouseEvent 
when mouse left button is double`-clicked. Default implementation 
calls LeftDown.&]
[s7;i1120;a17; [%-*C@3 p]-|Position of mouse cursor in view coordinates.&]
[s7;i1120;a17; [%-*C@3 keyflags]-|Combination of key flags for Shift, 
Ctrl and Alt keys.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:LeftTriple`(Point`,dword`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* LeftTr
iple]([_^`:`:Point^ Point]_[*@3 p], [_^`:`:dword^ dword]_[*@3 keyflags])&]
[s2;b17;a17; This method is called by default implementation of MouseEvent 
when mouse left button is triple`-clicked. Default implementation 
calls LeftDown.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:LeftDrag`(Point`,dword`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* LeftDrag
]([_^`:`:Point^ Point]_[*@3 p], [_^`:`:dword^ dword]_[*@3 keyflags])&]
[s2;b17;a17; This method is called by default implementation of MouseEvent 
when user moves the mouse while holding left button by more than 
GUI`_DragDistance pixels. [%-*@3 p] is the starting point of drag, 
not the current mouse position.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:LeftHold`(Point`,dword`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* LeftHold
]([_^`:`:Point^ Point]_[*@3 p], [_^`:`:dword^ dword]_[*@3 keyflags])&]
[s2;b17;a17; This method is called by default implementation of MouseEvent 
when user holds the mouse left button down for a while.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:LeftRepeat`(Point`,dword`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* LeftRe
peat]([_^`:`:Point^ Point]_[*@3 p], [_^`:`:dword^ dword]_[*@3 keyflags])&]
[s2;b17;a17; This method is repeatedly called by default implementation 
of MouseEvent when mouse left button is pressed for some time, 
imitating keyboard autorepeat behaviour.&]
[s7;i1120;a17; [%-*C@3 p]-|Position of mouse cursor in view coordinates.&]
[s7;i1120;a17; [%-*C@3 keyflags]-|Combination of key flags for Shift, 
Ctrl and Alt keys.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:LeftUp`(Point`,dword`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* LeftUp]([_^`:`:Point^ P
oint]_[*@3 p], [_^`:`:dword^ dword]_[*@3 keyflags])&]
[s2;b17;a17; This method is called by default implementation of MouseEvent 
when mouse left button is released.&]
[s7;i1120;a17; [%-*C@3 p]-|Position of mouse cursor in view coordinates.&]
[s7;i1120;a17; [%-*C@3 keyflags]-|Combination of key flags for Shift, 
Ctrl and Alt keys.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:RightDown`(Point`,dword`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* RightDo
wn]([_^`:`:Point^ Point]_[*@3 p], [_^`:`:dword^ dword]_[*@3 keyflags])&]
[s2;b17;a17; This method is called by default implementation of MouseEvent 
when mouse right button is pressed.&]
[s7;i1120;a17; [%-*C@3 p]-|Position of mouse cursor in view coordinates.&]
[s7;i1120;a17; [%-*C@3 keyflags]-|Combination of key flags for Shift, 
Ctrl and Alt keys.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:RightDouble`(Point`,dword`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* Right
Double]([_^`:`:Point^ Point]_[*@3 p], [_^`:`:dword^ dword]_[*@3 keyflags])&]
[s2;b17;a17; This method is called by default implementation of MouseEvent 
when mouse right button is double`-clicked. Default implementation 
calls RightDown.&]
[s7;i1120;a17; [%-*C@3 p]-|Position of mouse cursor in view coordinates.&]
[s7;i1120;a17; [%-*C@3 keyflags]-|Combination of key flags for Shift, 
Ctrl and Alt keys.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:RightTriple`(Point`,dword`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* Right
Triple]([_^`:`:Point^ Point]_[*@3 p], [_^`:`:dword^ dword]_[*@3 keyflags])&]
[s2;b17;a17; This method is called by default implementation of MouseEvent 
when mouse right button is triple`-clicked. Default implementation 
calls RightDown.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:RightDrag`(Point`,dword`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* RightDr
ag]([_^`:`:Point^ Point]_[*@3 p], [_^`:`:dword^ dword]_[*@3 keyflags])&]
[s2;b17;a17; This method is called by default implementation of MouseEvent 
when user moves the mouse while holding right button by more 
than GUI`_DragDistance pixels. [%-*@3 p] is the starting point 
of drag, not the current mouse position.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:RightHold`(Point`,dword`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* RightHo
ld]([_^`:`:Point^ Point]_[*@3 p], [_^`:`:dword^ dword]_[*@3 keyflags])&]
[s2;b17;a17; This method is called by default implementation of MouseEvent 
when user holds the mouse right button down for a while.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:RightRepeat`(Point`,dword`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* Right
Repeat]([_^`:`:Point^ Point]_[*@3 p], [_^`:`:dword^ dword]_[*@3 keyflags])&]
[s2;b17;a17; This method is repeatedly called by default implementation 
of MouseEvent when mouse right button is pressed for some time, 
imitating keyboard autorepeat behaviour.&]
[s7;i1120;a17; [%-*C@3 p]-|Position of mouse cursor in view coordinates.&]
[s7;i1120;a17; [%-*C@3 keyflags]-|Combination of key flags for Shift, 
Ctrl and Alt keys.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:RightUp`(Point`,dword`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* RightUp](
[_^`:`:Point^ Point]_[*@3 p], [_^`:`:dword^ dword]_[*@3 keyflags])&]
[s2;b17;a17; This method is called by default implementation of MouseEvent 
when mouse left button is released.&]
[s7;i1120;a17; [%-*C@3 p]-|Position of mouse cursor in view coordinates.&]
[s7;i1120;a17; [%-*C@3 keyflags]-|Combination of key flags for Shift, 
Ctrl and Alt keys.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:MiddleDown`(Point`,dword`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* Middle
Down]([_^Point^ Point]_[*@3 p], [_^dword^ dword]_[*@3 keyflags])&]
[s2;b17;a17; This method is called by default implementation of MouseEvent 
when mouse middle button is pressed.&]
[s7;i1120;a17; [%-*C@3 p]-|Position of mouse cursor in view coordinates.&]
[s7;i1120;a17; [%-*C@3 keyflags]-|Combination of key flags for Shift, 
Ctrl and Alt keys.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:MiddleDouble`(Point`,dword`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* Midd
leDouble]([_^Point^ Point]_[*@3 p], [_^dword^ dword]_[*@3 keyflags])&]
[s2;b17;a17; This method is called by default implementation of MouseEvent 
when mouse left button is double`-clicked.&]
[s7;i1120;a17; [%-*C@3 p]-|Position of mouse cursor in view coordinates.&]
[s7;i1120;a17; [%-*C@3 keyflags]-|Combination of key flags for Shift, 
Ctrl and Alt keys.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:MiddleTriple`(Point`,dword`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* Midd
leTriple]([_^Point^ Point]_[*@3 p], [_^dword^ dword]_[*@3 keyflags])&]
[s2; This method is called by default implementation of MouseEvent 
when mouse right button is triple`-clicked.&]
[s7;i1120;a17; [%-*C@3 p]-|Position of mouse cursor in view coordinates.&]
[s7;i1120;a17; [%-*C@3 keyflags]-|Combination of key flags for Shift, 
Ctrl and Alt keys.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:MiddleRepeat`(Point`,dword`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* Midd
leRepeat]([_^Point^ Point]_[*@3 p], [_^dword^ dword]_[*@3 keyflags])&]
[s2; This method is repeatedly called by default implementation of 
MouseEvent when mouse right button is pressed for some time, 
imitating keyboard autorepeat behaviour.&]
[s7;i1120;a17; [%-*C@3 p]-|Position of mouse cursor in view coordinates.&]
[s7;i1120;a17; [%-*C@3 keyflags]-|Combination of key flags for Shift, 
Ctrl and Alt keys.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:MiddleDrag`(Point`,dword`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* Middle
Drag]([_^Point^ Point]_[*@3 p], [_^dword^ dword]_[*@3 keyflags])&]
[s2; This method is called by default implementation of MouseEvent 
when user moves the mouse while holding middle button by more 
than GUI`_DragDistance pixels. [%-*@3 p] is the starting point 
of drag, not the current mouse position.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:MiddleHold`(Point`,dword`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* Middle
Hold]([_^Point^ Point]_[*@3 p], [_^dword^ dword]_[*@3 keyflags])&]
[s2; This method is called by default implementation of MouseEvent 
when user holds the mouse middle button down for a while.&]
[s7;i1120;a17; [%-*C@3 p]-|Position of mouse cursor in view coordinates.&]
[s7;i1120;a17; [%-*C@3 keyflags]-|Combination of key flags for Shift, 
Ctrl and Alt keys.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:MiddleUp`(Point`,dword`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* MiddleUp
]([_^Point^ Point]_[*@3 p], [_^dword^ dword]_[*@3 keyflags])&]
[s2; This method is called by default implementation of MouseEvent 
when mouse middle button is released.&]
[s7;i1120;a17; [%-*C@3 p]-|Position of mouse cursor in view coordinates.&]
[s7;i1120;a17; [%-*C@3 keyflags]-|Combination of key flags for Shift, 
Ctrl and Alt keys.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:MouseWheel`(Point`,int`,dword`):%- [@(0.0.255) virtual] 
[@(0.0.255) void]_[* MouseWheel]([_^`:`:Point^ Point]_[*@3 p], [@(0.0.255) int]_[*@3 zdelta],
 [_^`:`:dword^ dword]_[*@3 keyflags])&]
[s2;b17;a17; This method is called by default implementation of MouseEvent 
when mouse wheel is rotated. Default implementation of this method 
propagates event to the parent and suppresses call of ChildMouseEvent 
for the parent.&]
[s7;i1120;a17; [%-*C@3 p]-|Position of mouse cursor in view coordinates.&]
[s7;i1120;a17; [%-*C@3 zdelta]-|Amount of rotation.&]
[s7;i1120;a17; [%-*C@3 keyflags]-|Combination of key flags for Shift, 
Ctrl and Alt keys.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:MouseLeave`(`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* MouseLeave]()&]
[s2;b17;a17; This method is called by default implementation of MouseEvent 
when mouse cursor leaves view area of Ctrl.&]
[s3;%- &]
[s4;%- &]
[s5;:Upp`:`:Ctrl`:`:GetPreedit`(`):%- [_^Upp`:`:Point^ Point]_[* GetPreedit]()&]
[s2; If the widget is supposed to support text input, it should return 
top`-left corner of insertion point so that host input method 
can eventually display a composition window near the insertion 
point with U`+`+ displaying composition text over the spot. Should 
return Null if widget does not require the text input. Default 
implementation returns the position of caret.&]
[s3;%- &]
[s4;%- &]
[s5;:Upp`:`:Ctrl`:`:GetPreeditFont`(`):%- [_^Upp`:`:Font^ Font]_[* GetPreeditFont]()&]
[s2; Should return the font that is supposed to be used for composition 
text. Default implementation returns StdFont().&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:DragAndDrop`(Point`,PasteClip`&`):%- [@(0.0.255) virtual] 
[@(0.0.255) void]_[* DragAndDrop]([_^Point^ Point]_[*@3 p], [_^PasteClip^ PasteClip][@(0.0.255) `&
]_[*@3 d])&]
[s2; This method is called when user performs drag and drop operation 
over view area. The drag operation can either be just moving 
the mouse, or actual drop `- the difference is that for actual 
drop the PasteClip`::Accept method returns true. This allows to 
share drag and drop logic, which is very similar, in the single 
method.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:FrameDragAndDrop`(Point`,PasteClip`&`):%- [@(0.0.255) virtual] 
[@(0.0.255) void]_[* FrameDragAndDrop]([_^Point^ Point]_[*@3 p], [_^PasteClip^ PasteClip][@(0.0.255) `&
]_[*@3 d])&]
[s2; This method is called when user performs drag and drop operation 
over frame area. The drag operation can either be just moving 
the mouse, or actual drop `- the difference is that for actual 
drop the PasteClip`::Accept method returns true. This allows to 
share drag and drop logic, which is very similar, in the single 
method.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:DragRepeat`(Point`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* DragRepeat]([_^Point^ P
oint]_[*@3 p])&]
[s2; This method is called when user holds his drag operation over 
single position for some time. This is similar to LeftRepeat 
and it is usually used to scroll the content of view when DragRepeat 
occurs at the border area of view.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:DragEnter`(`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* DragEnter]()&]
[s2; Called when user enters view with drag.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:DragLeave`(`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* DragLeave]()&]
[s2; Called when user`'s drag leaves the view.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetDropData`(const String`&`)const:%- [@(0.0.255) virtual] 
[_^String^ String]_[* GetDropData]([@(0.0.255) const]_[_^String^ String][@(0.0.255) `&]_[*@3 f
mt])_[@(0.0.255) const]&]
[s2; This method is invoked to obtain drop data from Ctrl if such 
data was not supplied as ClipData in call to DoDragAndDrop. Default 
implementation calls GetSelectionData.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:GetSelectionData`(const String`&`)const:%- [@(0.0.255) virtual] 
[_^String^ String]_[* GetSelectionData]([@(0.0.255) const]_[_^String^ String][@(0.0.255) `&
]_[*@3 fmt])_[@(0.0.255) const]&]
[s2; This method should return the widget`'s actual selection in 
requested format. It is used for X11 middle mouse selection paste 
operation ans as default implementation of GetDropData, because 
usually the data to be transfered by drag`&drop operation is 
the selection.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:CursorImage`(Point`,dword`):%- [@(0.0.255) virtual] [_^`:`:Image^ Image]_[* Cu
rsorImage]([_^`:`:Point^ Point]_[*@3 p], [_^`:`:dword^ dword]_[*@3 keyflags])&]
[s2;b17;a17; This method is called by default implementation of MouseEvent 
when the shape of mouse cursor is to be determined..&]
[s7;i1120;a17; [%-*C@3 p]-|Position of mouse cursor in view coordinates.&]
[s7;i1120;a17; [%-*C@3 keyflags]-|Combination of key flags for Shift, 
Ctrl and Alt keys.&]
[s7;i1120;a17; [*/ Return value]-|Image of new cursor. Default implementation 
returns Image`::Arrow().&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:Key`(dword`,int`):%- [@(0.0.255) virtual] [@(0.0.255) bool]_[* Key]([_^`:`:dword^ d
word]_[*@3 key], [@(0.0.255) int]_[*@3 count])&]
[s2;b17;a17; This method provides keyboard input. When keyboard event 
occurs and some of U`+`+ application Ctrls has input focus, its 
Key method is called. If Key method returns true, processing 
of key event is finished. If it returns false, U`+`+ calls Key 
method of parent Ctrl and it repeats until either true is returned 
or Ctrl has no parent. If such top`-level Ctrl is reached, U`+`+ 
calls its HotKey method. Default implementation is void and returns 
false.&]
[s7;i1120;a17; [%-*C@3 key]-|Key identifier. If it is less than 65536, 
it indicates character code, otherwise it is key`-code. Key`-code 
is combination of basic key codes and further flags indicating 
state of shift keys and push/release events.&]
[s7;i1120;a17; [%-*C@3 count]-|Accumulated autorepeat count.&]
[s7;i1120;a17; [*/ Return value]-|Method should return true if further 
propagation is not desirable (in most cases this indicates that 
Ctrl accepted the key).&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:HotKey`(dword`):%- [@(0.0.255) virtual] [@(0.0.255) bool]_[* HotKey]([_^`:`:dword^ d
word]_[*@3 key])&]
[s2;b17;a17; This method is called when no Ctrl accepts key event 
using Key method. Default implementation calls HotKey method 
child Ctrls. If some child Ctrl returns true, method returns 
true, otherwise it returns false.&]
[s7;i1120;a17; [%-*C@3 key]-|Key indentifier.&]
[s7;i1120;a17; [*/ Return value]-|Method should return true to stop 
further distribution of key event via HotKey methods.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GotFocus`(`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* GotFocus]()&]
[s2;b17;a17; This method is called when Ctrl receives input focus. 
Default implementation is void.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:LostFocus`(`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* LostFocus]()&]
[s2;b17;a17; This method is called when Ctrl loses input focus. Default 
implementation is void.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:ChildFrameMouseEvent`(Ctrl`*`,int`,Point`,int`,dword`):%- [@(0.0.255) virt
ual] [@(0.0.255) void]_[* ChildFrameMouseEvent]([_^Ctrl^ Ctrl]_`*[*@3 child], 
[@(0.0.255) int]_[*@3 event], [_^Point^ Point]_[*@3 p], [@(0.0.255) int]_[*@3 zdelta], 
[_^dword^ dword]_[*@3 keyflags])&]
[s2; This method is invoked before the [/ frame] mouse [%-*@3 event] 
is routed to the [%-*@3 child]. Parameters of the event are the 
same as those in MouseEvent method. Default implementation calls 
the parent`'s ChildMouseEvent method.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:ChildMouseEvent`(Ctrl`*`,int`,Point`,int`,dword`):%- [@(0.0.255) virtual] 
[@(0.0.255) void]_[* ChildMouseEvent]([_^`:`:Ctrl^ Ctrl]_`*[*@3 child], 
[@(0.0.255) int]_[*@3 event], [_^`:`:Point^ Point]_[*@3 p], [@(0.0.255) int]_[*@3 zdelta], 
[_^`:`:dword^ dword]_[*@3 keyflags])&]
[s2;b17;a17; This method is invoked before the mouse [%-*@3 event] 
is routed to the [%-*@3 child]. Parameters of the event are the 
same as those in MouseEvent method. Default implementation calls 
the parent`'s ChildMouseEvent method.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:ChildGotFocus`(`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* ChildGotFocus](
)&]
[s2;b17;a17; This method is invoked when any of child Ctrls receives 
input focus.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:ChildLostFocus`(`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* ChildLostFocus
]()&]
[s2;b17;a17; This method is invoked when any of child Ctrls loses 
input focus.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetAccessKeys`(`)const:%- [@(0.0.255) virtual] [_^`:`:dword^ dword]_[* GetAcce
ssKeys]()_[@(0.0.255) const]&]
[s2;b17;a17; Ctrl should use this method to signal presence of access 
keys. Access keys are keyboard keys that can be used to access 
or activate dialog functions when pressed together with Alt key. 
They can be defined by application designer (usually using `& 
or `\b in labels), or they are automatically synthesized using 
[* AssignAccessKeys] method. If Ctrl (of one of Ctrls in its child 
tree) has some access keys and those keys are letters (in range 
`'A`' `- `'Z`'), they should be returned as bit value using AccessKeyBit 
function. Other access keys should be indicated by bit 0 (that 
means, by binary or of 1 to result). Default implementation returns 
0.&]
[s7;i1120;a17; [*/ Return value]-|Bit set of access keys.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:AssignAccessKeys`(dword`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* AssignA
ccessKeys]([_^`:`:dword^ dword]_[*@3 used])&]
[s2;b17;a17; This method gives a Ctrl chance to synthesize its letter 
access keys.&]
[s7;i1120;a17; [%-*C@3 used]-|Set of letter access keys that are already 
used and should not be chosen by Ctrl as its access keys.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:ChildAdded`(Ctrl`*`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* ChildAdded](
[_^`:`:Ctrl^ Ctrl]_`*[*@3 child])&]
[s2;b17;a17; This method is invoked when child is added to Ctrl.&]
[s7;i1120;a17; [%-*C@3 child]-|Pointer to child added.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:ChildRemoved`(Ctrl`*`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* ChildRemov
ed]([_^`:`:Ctrl^ Ctrl]_`*[*@3 child])&]
[s2;b17;a17; This method is invoked when child is removed from Ctrl.&]
[s7;i1120;a17; [%-*C@3 child]-|Pointer to child removed.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:ParentChange`(`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* ParentChange]()&]
[s2;b17;a17; This method is called when Ctrl is added or removed 
from parent.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:State`(int`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* State]([@(0.0.255) int
]_[*@3 reason])&]
[s2;b17;a17; This method is used to notify Ctrls about special state`-change 
events that are not covered by virtual methods. Method is called 
for entire child tree of Ctrl whose state has changed.&]
[s7;i1120;a17; [%-*C@3 reason]-|Code of event. Standard reasons are 
enumerated by StateReason enum.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:Layout`(`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* Layout]()&]
[s2;b17;a17; This method is invoked when layout of Ctrl has to be 
refreshed. This is usually either before window is displayed 
or when the Ctrl is resized.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetMinSize`(`)const:%- [@(0.0.255) virtual] [_^`:`:Size^ Size]_[* GetMinSize](
)_[@(0.0.255) const]&]
[s2;b17;a17; This method should return [/ minimal] size of Ctrl. This 
is used e.g. to limit the minimal size of windows. Default implementation 
returns size suitable for edit`-field type of widget, based on 
default GUI font and EditFieldIsThin setting.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetStdSize`(`)const:%- [@(0.0.255) virtual] [_^`:`:Size^ Size]_[* GetStdSize](
)_[@(0.0.255) const]&]
[s2;b17;a17; This method should return [/ standard] size of Ctrl. Default 
implementation returns calls GetMinSize, increases width 10 and 
returns resulting Size.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetMaxSize`(`)const:%- [@(0.0.255) virtual] [_^Size^ Size]_[* GetMaxSize]()_[@(0.0.255) c
onst]&]
[s2; This method should return [/ maximal] size of Ctrl. Default implementation 
returns the size of virtual working area. Redefinition can be 
used to e.g. define the maximum size of window (as maximal size 
of view area).&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:IsShowEnabled`(`)const:%- [@(0.0.255) virtual] [@(0.0.255) bool]_[* IsShowEnab
led]()_[@(0.0.255) const]&]
[s2;b17;a17; This method indicates whether Ctrl should be painted 
as enabled. Default implementation returns IsEnabled() `&`& (!parent 
`|`| parent`->IsShowEnabled()), however TopWindow overloads this 
function so that owner of modal dialogs while being disabled 
during modal dialog lifetime are displayed with enabled Ctrls.&]
[s7;i1120;a17; [*/ Return value]-|true if Ctrl should be painted as 
enabled.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetOpaqueRect`(`)const:%- [@(0.0.255) virtual] [_^Rect^ Rect]_[* GetOpaqueRect
]()_[@(0.0.255) const]&]
[s2; Returns the rectangle of view area that is opaque (is completely 
filled when painting the widget). The default implementation 
returns the whole view area if Transparent flag is set, empty 
rectangle otherwise. Paint routine uses this information to optimize.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetVoidRect`(`)const:%- [@(0.0.255) virtual] [_^Rect^ Rect]_[* GetVoidRect]()_
[@(0.0.255) const]&]
[s2; Returns the rectangle of view area that is fully transparent 
(nothing is painted in that rectangle). Paint routine uses this 
information to optimize.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:Updated`(`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* Updated]()&]
[s2; Invoked by Update method. Default implementation is empty.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:OverPaint`(`)const:%- [@(0.0.255) virtual] [@(0.0.255) int]_[* OverPaint]()_[@(0.0.255) c
onst]&]
[s2;b17;a17; This method can returns non`-zero number that represents 
paint extension margin of view area `- Ctrl can paint inside 
this margin despite that fact that it does not belong to view. 
This is useful to represent some specific skinning effect (like 
glare around the button). Default implementation returns zero.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:Close`(`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* Close]()&]
[s2;b17;a17; Closes top`-level Ctrl. If Ctrl is not top`-level, has 
no effect. If it is and is open in host GUI (either as pop`-up 
or as [^topic`:`/`/CtrlCore`/src`/TopWindow`$en`-us`#`:`:TopWindow`:`:class^ TopWin
dow]), it should close it. Default implementation closes. TopWindow 
overrides this method to break modal loop instead of closing 
if modal loop is performed for it.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:IsOcxChild`(`):%- [@(0.0.255) virtual] [@(0.0.255) bool]_[* IsOcxChild]()&]
[s2;b17;a17; Used for Ocx control implementation.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetDesc`(`)const:%- [@(0.0.255) virtual] [_^String^ String]_[* GetDesc]()_[@(0.0.255) c
onst]&]
[s2; Returns description of Ctrl for diagnostic purposes. Default 
implementation is empty.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:WhenAction:%- [_^Callback^ Callback]_[* WhenAction]&]
[s2; This callback is used to signal that [/ user] has changed the 
value (or state) of widget.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:SetData`(const Value`&`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* SetData](
[@(0.0.255) const]_[_^`:`:Value^ Value][@(0.0.255) `&]_[*@3 data])&]
[s2;b17;a17; Sets the new value to the object. Default implementation 
is void.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetData`(`)const:%- [@(0.0.255) virtual] [_^`:`:Value^ Value]_[* GetData]()_[@(0.0.255) c
onst]&]
[s2;b17;a17; Gets current value of the object. Default implementation 
returns Value() `- void value.&]
[s7;i1120;a17; [*/ Return value]-|Value of object.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:SetModify`(`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* SetModify]()&]
[s2;b17;a17; Sets modification flag.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:ClearModify`(`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* ClearModify]()&]
[s2;b17;a17; Clears modification flag.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:IsModified`(`)const:%- [@(0.0.255) virtual] [@(0.0.255) bool]_[* IsModified]()
_[@(0.0.255) const]&]
[s2;b17;a17; Returns the value modification flag.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:Accept`(`):%- [@(0.0.255) virtual] [@(0.0.255) bool]_[* Accept]()&]
[s2;b17;a17; This virtual method is called when value of Ctrl is 
about to be accepted. Default implementation calls Accept for 
all child Ctrls and returns false if any of child Ctrls returns 
false, true otherwise.&]
[s2;b17;a17; Typical use is when user pressed OK button. If any Ctrl 
of dialog returns false, OK is canceled.&]
[s2;b17;a17; Typical implementation of this method should test whether 
current state of Ctrl (its edited value) matches requirements. 
If it does, it should finish editing, accept edited value and 
return true. Otherwise it should return false, &]
[s7;i1120;a17; [*/ Return value]-|Ctrl should return true if it successfully 
finished editing, false otherwise.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:Reject`(`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* Reject]()&]
[s2;b17;a17; This virtual method is called when Ctrl should abort 
editing, discarding edited value. Default implementation calls 
Reject for all child Ctrls.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:Serialize`(Stream`&`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* Serialize](
[_^`:`:Stream^ Stream][@(0.0.255) `&]_[*@3 s])&]
[s2;b17;a17; Serialization method. Should serialize the value of 
Ctrl in a way that is suitable for dialog backup and optional 
restore (e.g. when user presses Cancel button).&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:Jsonize`(JsonIO`&`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* Jsonize]([_^JsonIO^ J
sonIO][@(0.0.255) `&]_[*@3 jio])&]
[s2; Method to convert the data of widget to/from JSON. Default implementation 
calls Jsonize for Value obtained/set by GetData/SetData.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:Xmlize`(XmlIO`&`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* Xmlize]([_^XmlIO^ X
mlIO][@(0.0.255) `&]_[*@3 xio])&]
[s2; Method to convert the data of widget to/from XML. Default implementation 
calls Jsonize for Value obtained/set by GetData/SetData.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:AddChild`(Ctrl`*`):%- [@(0.0.255) void]_[* AddChild]([_^`:`:Ctrl^ Ctrl]_`*[*@3 c
hild])&]
[s2;b17;a17; Adds a child Ctrl as last one.&]
[s7;i1120;a17; [%-*C@3 child]-|Pointer to child Ctrl at the end of child 
list. Note that U`+`+ never takes ownership of Ctrls `- never 
calls delete for [@3 child. ]That allows using non`-heap based 
Ctrls. &]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:AddChild`(Ctrl`*`,Ctrl`*`):%- [@(0.0.255) void]_[* AddChild]([_^`:`:Ctrl^ Ctrl
]_`*[*@3 child], [_^`:`:Ctrl^ Ctrl]_`*[*@3 insafter])&]
[s2;b17;a17; Inserts child Ctrl after another Ctrl that is already 
child. If [%-*@3 insafter] is NULL, child is inserted as the first 
child.&]
[s7;i1120;a17; [%-*C@3 child]-|Pointer to child Ctrl.&]
[s7;i1120;a17; [%-*C@3 insafter]-|Ctrl that will be before inserted 
Ctrl.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:AddChildBefore`(Ctrl`*`,Ctrl`*`):%- [@(0.0.255) void]_[* AddChildBefore]([_^`:`:Ctrl^ C
trl]_`*[*@3 child], [_^`:`:Ctrl^ Ctrl]_`*[*@3 insbefore])&]
[s2;b17;a17; Inserts child Ctrl before another Ctrl that is already 
child. If [%-*@3 insbefore], child is inserted as last child.&]
[s7;i1120;a17; [%-*C@3 child]-|Pointer to child Ctrl.&]
[s7;i1120;a17; [%-*C@3 insbefore]-|Ctrl that will be after inserted 
Ctrl.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:RemoveChild`(Ctrl`*`):%- [@(0.0.255) void]_[* RemoveChild]([_^`:`:Ctrl^ Ctrl]_
`*[*@3 child])&]
[s2;b17;a17; Removes Ctrl from child list. Ctrl is never deleted.&]
[s7;i1120;a17; [%-*C@3 child]-|Child to be removed.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetParent`(`)const:%- [_^`:`:Ctrl^ Ctrl]_`*[* GetParent]()_[@(0.0.255) const]&]
[s2;b17;a17; Returns parent of Ctrl or NULL if Ctrl is topmost.&]
[s7;i1120;a17; [*/ Return value]-|Pointer to parent Ctrl.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetLastChild`(`)const:%- [_^`:`:Ctrl^ Ctrl]_`*[* GetLastChild]()_[@(0.0.255) c
onst]&]
[s2;b17;a17; Returns last child.&]
[s7;i1120;a17; [*/ Return value]-|Pointer to last child or NULL if Ctrl 
has no children.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetFirstChild`(`)const:%- [_^`:`:Ctrl^ Ctrl]_`*[* GetFirstChild]()_[@(0.0.255) c
onst]&]
[s2;b17;a17; Returns first child.&]
[s7;i1120;a17; [*/ Return value]-|Pointer to first child or NULL if 
Ctrl has no children.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetPrev`(`)const:%- [_^`:`:Ctrl^ Ctrl]_`*[* GetPrev]()_[@(0.0.255) const]&]
[s2;b17;a17; Returns child that is before this Ctrl in child list 
or NULL if Ctrl is first or not in list.&]
[s7;i1120;a17; [*/ Return value]-|Pointer to previous child or NULL.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetNext`(`)const:%- [_^`:`:Ctrl^ Ctrl]_`*[* GetNext]()_[@(0.0.255) const]&]
[s2;b17;a17; Returns next child that is after this Ctrl in child 
list or NULL if Ctrl is last or not in list.&]
[s7;i1120;a17; [*/ Return value]-|Pointer to next child or NULL.&]
[s3;%- &]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetChildIndex`(const Ctrl`*`)const:%- [@(0.0.255) int]_[* GetChildIndex]([@(0.0.255) c
onst]_[_^Ctrl^ Ctrl]_`*[*@3 child])_[@(0.0.255) const]&]
[s2; Returns the index of [%-*@3 child] (first child has index 0, second 
child 1 etc...). If [%-*@3 child] is not present in this Ctrl, 
returns `-1. Note that this function performs sequential scan 
of child (results in O(n) complexity).&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:GetChildCount`(`)const:%- [@(0.0.255) int]_[* GetChildCount]()_[@(0.0.255) con
st]&]
[s2; Returns the number of child ctrls. Note that this function performs 
sequential scan of child (results in O(n) complexity).&]
[s3; &]
[s4;%- &]
[s5;:Upp`:`:Ctrl`:`:GetAscendant`(`)const:%- [@(0.0.255) template]_<[@(0.0.255) class]_[*@4 T
]>_[*@4 T]_`*[* GetAscendant]()_[@(0.0.255) const]&]
[s2; Returns first ascendant (parent, parent of parent etc..) that 
has type [%-*@4 T].&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetIndexChild`(int`)const:%- [_^Ctrl^ Ctrl]_`*[* GetIndexChild]([@(0.0.255) in
t]_[*@3 i])_[@(0.0.255) const]&]
[s2; Retruns child at index [%-*@3 i] or NULL if there is none. Note 
that this function performs sequential scan of child (results 
in O(n) complexity).&]
[s3;%- &]
[s4;%- &]
[s5;:Upp`:`:Ctrl`:`:GetViewChildIndex`(const Upp`:`:Ctrl`*`)const:%- [@(0.0.255) int]_[* G
etViewChildIndex]([@(0.0.255) const]_[_^Upp`:`:Ctrl^ Ctrl]_`*[*@3 child])_[@(0.0.255) con
st]&]
[s2; Returns the index of view [%-*@3 child] (first child has index 
0, second child 1 etc...). If [%-*@3 child] is not present in this 
Ctrl or is in frame, returns `-1. Note that this function performs 
sequential scan of child (results in O(n) complexity). This is 
similar to GetChildIndex, but frame widgets are ignored.&]
[s3; &]
[s4;%- &]
[s5;:Upp`:`:Ctrl`:`:GetViewChildCount`(`)const:%- [@(0.0.255) int]_[* GetViewChildCount](
)_[@(0.0.255) const]&]
[s2; Returns the number of child ctrls. Note that this function performs 
sequential scan of child (results in O(n) complexity). This is 
similar to GetChildCount, but frame widgets are ignored.&]
[s3;%- &]
[s4;%- &]
[s5;:Upp`:`:Ctrl`:`:GetViewIndexChild`(int`)const:%- [_^Upp`:`:Ctrl^ Ctrl]_`*[* GetViewIn
dexChild]([@(0.0.255) int]_[*@3 ii])_[@(0.0.255) const]&]
[s2; Retruns view child at index [%-*@3 i] or NULL if there is none. 
Note that this function performs sequential scan of child (results 
in O(n) complexity). This is similar to GetIndexChild, but frame 
widgets are ignored.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:IsChild`(`)const:%- [@(0.0.255) bool]_[* IsChild]()_[@(0.0.255) const]&]
[s7;i1120;a17; [*/ Return value]-|True if Ctrl has parent.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:ChildFromPoint`(Point`&`)const:%- [_^`:`:Ctrl^ Ctrl]_`*[* ChildFromPoint]([_^`:`:Point^ P
oint][@(0.0.255) `&]_[*@3 pt])_[@(0.0.255) const]&]
[s2;b17;a17; Checks whether opened top`-level Ctrl is foreground.&]
[s7;i1120;a17; [*/ Return value]-|True if Ctrl is foreground.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:IsForeground`(`)const:%- [@(0.0.255) bool]_[* IsForeground]()_[@(0.0.255) cons
t]&]
[s2; Returns true if Ctrl or its top`-level parent is foreground 
window.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:SetForeground`(`):%- [@(0.0.255) void]_[* SetForeground]()&]
[s2;b17;a17; Asks platform to put top`-level Ctrl to foreground.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:GetTopCtrl`(`)const:%- [@(0.0.255) const]_[_^Ctrl^ Ctrl]_`*[* GetTopCtrl]()_[@(0.0.255) c
onst]&]
[s2; Gets the top`-level Ctrl, that is Ctrl that has this Ctrl in 
child tree and has no parent.&]
[s7;i1120;a17; [*/ Return value]-|Pointer to top`-level Ctrl. Can return 
this.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetTopCtrl`(`):%- [_^Ctrl^ Ctrl]_`*[* GetTopCtrl]()&]
[s2; Gets the top`-level Ctrl, that is Ctrl that has this Ctrl in 
child tree and has no parent.&]
[s7;i1120;a17; [*/ Return value]-|Pointer to top`-level Ctrl. Can return 
this.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:GetOwner`(`)const:%- [@(0.0.255) const]_[_^Ctrl^ Ctrl]_`*[* GetOwner]()_[@(0.0.255) c
onst]&]
[s2; Returns owner of top`-level Ctrl. Example of owned window is 
dialog launched from main application window. Owner is another 
top`-level Ctrl.&]
[s7;i1120;a17; [*/ Return value]-|Pointer to owner top`-level Ctrl or 
NULL is window is not owned.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetOwner`(`):%- [_^`:`:Ctrl^ Ctrl]_`*[* GetOwner]()&]
[s2;b17;a17; Returns owner of top`-level Ctrl.&]
[s7;i1120;a17; [*/ Return value]-|Pointer to owner top`-level Ctrl or 
NULL is window is not owned.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:GetTopCtrlOwner`(`)const:%- [@(0.0.255) const]_[_^Ctrl^ Ctrl]_`*[* GetTopCtrlO
wner]()_[@(0.0.255) const]&]
[s2; Equivalent to GetTopCtrl()`->GetOwner() call.&]
[s7;i1120;a17; [*/ Return value]-|Pointer to owner of top`-level Ctrl.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetTopCtrlOwner`(`):%- [_^`:`:Ctrl^ Ctrl]_`*[* GetTopCtrlOwner]()&]
[s2;b17;a17; Equivalent to GetTopCtrl()`->GetOwner() call.&]
[s7;i1120;a17; [*/ Return value]-|Pointer to owner of top`-level Ctrl.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetOwnerCtrl`(`):%- [_^`:`:Ctrl^ Ctrl]_`*[* GetOwnerCtrl]()&]
[s5;K:Ctrl`:`:GetOwnerCtrl`(`)const:%- [*@(0.0.255) const][*@(64) _][*^`:`:Ctrl^@(64) Ctrl][*@(64) _
`*][* GetOwnerCtrl][*@(64) ()_][*@(0.0.255) const]&]
[s2;b17;a17; Returns the owner Ctrl. Unlike GetOwner, it returns 
actual widget that was used as `"owner`" parameter in Open or 
PopUp calls.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:GetTopWindow`(`)const:%- [@(0.0.255) const]_[_^TopWindow^ TopWindow]_`*[* GetT
opWindow]()_[@(0.0.255) const]&]
[s2; TopWindow that contains this Ctrl.&]
[s7;i1120;a17; [*/ Return value]-|Pointer to TopWindow.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetTopWindow`(`):%- [_^`:`:TopWindow^ TopWindow]_`*[* GetTopWindow]()&]
[s2;b17;a17; TopWindow that contains this Ctrl.&]
[s7;i1120;a17; [*/ Return value]-|Pointer to TopWindow.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:GetMainWindow`(`)const:%- [@(0.0.255) const]_[_^TopWindow^ TopWindow]_`*[* Get
MainWindow]()_[@(0.0.255) const]&]
[s2; Returns main window (one with no owner) that directly or indirectly 
owns this Ctrl.&]
[s7;i1120;a17; [*/ Return value]-|Pointer to main window.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetMainWindow`(`):%- [_^`:`:TopWindow^ TopWindow]_`*[* GetMainWindow]()&]
[s2;b17;a17; Returns main window (one with no owner) that directly 
or indirectly owns this Ctrl.&]
[s7;i1120;a17; [*/ Return value]-|Pointer to main window.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:SetFrame`(int`,CtrlFrame`&`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* SetFrame](
[@(0.0.255) int]_[*@3 i], [_^`:`:CtrlFrame^ CtrlFrame][@(0.0.255) `&]_[*@3 frm])&]
[s2;b17;a17; Sets Frame at given position. If there is no such position 
yet, required number of NullFrame frames is added. Only reference 
to frame is stored, that means that frame must exists during 
the time it is used in Ctrl. Also, some frames can also be used 
for multiple Ctrls.&]
[s7;i1120;a17; [%-*C@3 i]-|Position. First frame with i `=`= 0 is outermost.&]
[s7;i1120;a17; [%-*C@3 frm]-|Reference to frame.&]
[s7;i1120;a17; [*/ Return value]-|Returns `*this to allow chaining of 
method calls.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:SetFrame`(CtrlFrame`&`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* SetFrame]([_^`:`:CtrlFrame^ C
trlFrame][@(0.0.255) `&]_[*@3 frm])&]
[s2;b17;a17; Sets frame at position 0.&]
[s7;i1120;a17; [%-*C@3 frm]-|Reference to frame.&]
[s7;i1120;a17; [*/ Return value]-|`*this.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:AddFrame`(CtrlFrame`&`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* AddFrame]([_^`:`:CtrlFrame^ C
trlFrame][@(0.0.255) `&]_[*@3 frm])&]
[s2;b17;a17; Adds frame at inner`-most position.&]
[s7;i1120;a17; [%-*C@3 frm]-|Reference to frame.&]
[s7;i1120;a17; [*/ Return value]-|`*this.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetFrame`(int`)const:%- [@(0.0.255) const]_[_^`:`:CtrlFrame^ CtrlFrame][@(0.0.255) `&
]_[* GetFrame]([@(0.0.255) int]_[*@3 i]_`=_[@3 0])_[@(0.0.255) const]&]
[s2;b17;a17; Returns reference to frame at given position.&]
[s7;i1120;a17; [%-*C@3 i]-|Position.&]
[s7;i1120;a17; [*/ Return value]-|Reference to frame.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:GetFrame`(int`):%- [_^CtrlFrame^ CtrlFrame][@(0.0.255) `&]_[* GetFrame]([@(0.0.255) i
nt]_[*@3 i]_`=_[@3 0])&]
[s2; Returns reference to frame at given position.&]
[s7;i1120;a17; [%-*C@3 i]-|Position.&]
[s7;i1120;a17; [*/ Return value]-|Reference to frame.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:RemoveFrame`(int`):%- [@(0.0.255) void]_[* RemoveFrame]([@(0.0.255) int]_[*@3 i])
&]
[s2; Removes frame at given position.&]
[s7;i1120;a17; [%-*C@3 i]-|Index of frame.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:RemoveFrame`(CtrlFrame`&`):%- [@(0.0.255) void]_[* RemoveFrame]([_^`:`:CtrlFrame^ C
trlFrame][@(0.0.255) `&]_[*@3 frm])&]
[s2;b17;a17; Removes first frame equal to [@3 frm]. Equality means 
here that pointers to both frames are the same (it is same instance).&]
[s7;i1120;a17; [%-*C@3 frm]-|Frame to remove.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:InsertFrame`(int`,CtrlFrame`&`):%- [@(0.0.255) void]_[* InsertFrame]([@(0.0.255) i
nt]_[*@3 i], [_^`:`:CtrlFrame^ CtrlFrame][@(0.0.255) `&]_[*@3 frm])&]
[s2;b17;a17; Inserts frame at given position.&]
[s7;i1120;a17; [%-*C@3 i]-|Position.&]
[s7;i1120;a17; [%-*C@3 frm]-|Reference to frame.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:FindFrame`(CtrlFrame`&`):%- [@(0.0.255) int]_[* FindFrame]([_^`:`:CtrlFrame^ C
trlFrame][@(0.0.255) `&]_[*@3 frm])&]
[s2;b17;a17; Finds first frame equal to [@3 frm]. Equality means here 
that pointers to both frames are the same (it is same instance).&]
[s7;i1120;a17; [%-*C@3 frm]-|Frame to find.&]
[s7;i1120;a17; [*/ Return value]-|Index of frame or negative value if 
frame is not found.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetFrameCount`(`)const:%- [@(0.0.255) int]_[* GetFrameCount]()_[@(0.0.255) con
st]&]
[s2;b17;a17; Returns count of frames in Ctrl.&]
[s7;i1120;a17; [*/ Return value]-|Count of frames.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:ClearFrames`(`):%- [@(0.0.255) void]_[* ClearFrames]()&]
[s2;b17;a17; Removes all frames from Ctrl. Frame at position 0 then 
added and set to NullFrame.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:IsOpen`(`)const:%- [@(0.0.255) bool]_[* IsOpen]()_[@(0.0.255) const]&]
[s2;b17;a17; Checks whether top`-level Ctrl of this Ctrl is open.&]
[s7;i1120;a17; [*/ Return value]-|true if open.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:Shutdown`(`):%- [@(0.0.255) void]_[* Shutdown]()&]
[s2;b17;a17; Sets internal flag indicating that Ctrl is being destructed. 
This is rarely used to solve some destruction order problems.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:IsShutdown`(`)const:%- [@(0.0.255) bool]_[* IsShutdown]()_[@(0.0.255) const]&]
[s2;b17;a17; Checks whether internal shutdown flag is set.&]
[s7;i1120;a17; [*/ Return value]-|True if in shutdown mode.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:SetPos`(Ctrl`:`:LogPos`,bool`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* SetPos](
[_^`:`:Ctrl`:`:LogPos^ LogPos]_[*@3 p], [@(0.0.255) bool]_[*@3 inframe])&]
[s2;b17;a17; Sets [^topic`:`/`/CtrlCore`/src`/LogPos`$en`-us^ logical 
position] of Ctrl. If Ctrl is top`-level, logical position must 
be of left`-top type.&]
[s7;i1120;a17; [%-*C@3 p]-|Logical position.&]
[s7;i1120;a17; [%-*C@3 inframe]-|If true, Ctrl is placed into [^topic`:`/`/CtrlCore`/src`/AboutFrames`$en`-us^ f
rame area] instead of view area&]
[s7;i1120;a17; [*/ Return value]-|`*this.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:SetPos`(Ctrl`:`:LogPos`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* SetPos]([_^`:`:Ctrl`:`:LogPos^ L
ogPos]_[*@3 p])&]
[s2;b17;a17; Sets logical position of Ctrl in view area.&]
[s7;i1120;a17; [%-*C@3 p]-|Logical position.&]
[s7;i1120;a17; [*/ Return value]-|`*this.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:SetPos`(Ctrl`:`:Logc`,Ctrl`:`:Logc`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* S
etPos]([_^`:`:Ctrl`:`:Logc^ Logc]_[*@3 x], [_^`:`:Ctrl`:`:Logc^ Logc]_[*@3 y])&]
[s2;b17;a17; Sets logical position by individual coordinates (in 
view area).&]
[s7;i1120;a17; [%-*C@3 x]-|Horizontal logical position.&]
[s7;i1120;a17; [%-*C@3 y]-|Vertical logical postion.&]
[s7;i1120;a17; [*/ Return value]-|`*this.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:SetPosX`(Ctrl`:`:Logc`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* SetPosX]([_^`:`:Ctrl`:`:Logc^ L
ogc]_[*@3 x])&]
[s2;b17;a17; Sets horizontal logical position only (in view area).&]
[s7;i1120;a17; [%-*C@3 x]-|Horizontal logical position.&]
[s7;i1120;a17; [*/ Return value]-|`*this.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:SetPosY`(Ctrl`:`:Logc`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* SetPosY]([_^`:`:Ctrl`:`:Logc^ L
ogc]_[*@3 y])&]
[s2;b17;a17; Sets vertical logical position only (in view area).&]
[s7;i1120;a17; [%-*C@3 y]-|Vertical logical position.&]
[s7;i1120;a17; [*/ Return value]-|`*this.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:SetRect`(const Rect`&`):%- [@(0.0.255) void]_[* SetRect]([@(0.0.255) const]_[_^`:`:Rect^ R
ect][@(0.0.255) `&]_[*@3 r])&]
[s2;b17;a17; Sets left`-top logical position (in view area).&]
[s7;i1120;a17; [%-*C@3 r]-|Rectangle determines left`-top position.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:SetRect`(int`,int`,int`,int`):%- [@(0.0.255) void]_[* SetRect]([@(0.0.255) int
]_[*@3 x], [@(0.0.255) int]_[*@3 y], [@(0.0.255) int]_[*@3 cx], [@(0.0.255) int]_[*@3 cy])&]
[s2;b17;a17; Sets left`-top logical position (in view area).&]
[s7;i1120;a17; [%-*C@3 x]-|Distance between parent rectangle left`-edge 
and Ctrl.&]
[s7;i1120;a17; [%-*C@3 y]-|Distance between parent rectangle top`-edge 
and Ctrl.&]
[s7;i1120;a17; [%-*C@3 cx]-|Horizontal size.&]
[s7;i1120;a17; [%-*C@3 cy]-|Vertical size.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:SetRectX`(int`,int`):%- [@(0.0.255) void]_[* SetRectX]([@(0.0.255) int]_[*@3 x],
 [@(0.0.255) int]_[*@3 cx])&]
[s2;b17;a17; Sets left horizontal logical position (in view area).&]
[s7;i1120;a17; [%-*C@3 x]-|Distance between parent rectangle left`-edge 
and Ctrl.&]
[s7;i1120;a17; [%-*C@3 cx]-|Horizontal size.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:SetRectY`(int`,int`):%- [@(0.0.255) void]_[* SetRectY]([@(0.0.255) int]_[*@3 y],
 [@(0.0.255) int]_[*@3 cy])&]
[s2;b17;a17; Sets top vertical logical position (in view area).&]
[s7;i1120;a17; [%-*C@3 y]-|Distance between parent rectangle top`-edge 
and Ctrl.&]
[s7;i1120;a17; [%-*C@3 cy]-|Vertical size.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:SetFramePos`(Ctrl`:`:LogPos`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* SetFrame
Pos]([_^`:`:Ctrl`:`:LogPos^ LogPos]_[*@3 p])&]
[s2;b17;a17; Sets logical position of Ctrl in frame area.&]
[s7;i1120;a17; [%-*C@3 p]-|Logical position.&]
[s7;i1120;a17; [*/ Return value]-|`*this.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:SetFramePos`(Ctrl`:`:Logc`,Ctrl`:`:Logc`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&
]_[* SetFramePos]([_^`:`:Ctrl`:`:Logc^ Logc]_[*@3 x], [_^`:`:Ctrl`:`:Logc^ Logc]_[*@3 y])&]
[s2;b17;a17; Sets logical position by individual coordinates (in 
frame area).&]
[s7;i1120;a17; [%-*C@3 x]-|Horizontal logical position.&]
[s7;i1120;a17; [%-*C@3 y]-|Vertical logical postion.&]
[s7;i1120;a17; [*/ Return value]-|`*this.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:SetFramePosX`(Ctrl`:`:Logc`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* SetFrameP
osX]([_^`:`:Ctrl`:`:Logc^ Logc]_[*@3 x])&]
[s2;b17;a17; Sets horizontal logical position only (in frame area).&]
[s7;i1120;a17; [%-*C@3 x]-|Horizontal logical position.&]
[s7;i1120;a17; [*/ Return value]-|`*this.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:SetFramePosY`(Ctrl`:`:Logc`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* SetFrameP
osY]([_^`:`:Ctrl`:`:Logc^ Logc]_[*@3 y])&]
[s2;b17;a17; Sets vertical logical position only (in frame area).&]
[s7;i1120;a17; [%-*C@3 y]-|Vertical logical position.&]
[s7;i1120;a17; [*/ Return value]-|`*this.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:SetFrameRect`(const Rect`&`):%- [@(0.0.255) void]_[* SetFrameRect]([@(0.0.255) c
onst]_[_^`:`:Rect^ Rect][@(0.0.255) `&]_[*@3 r])&]
[s2;b17;a17; Sets left`-top logical position (in frame area).&]
[s7;i1120;a17; [%-*C@3 r]-|Rectangle determines left`-top position.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:SetFrameRect`(int`,int`,int`,int`):%- [@(0.0.255) void]_[* SetFrameRect]([@(0.0.255) i
nt]_[*@3 x], [@(0.0.255) int]_[*@3 y], [@(0.0.255) int]_[*@3 cx], [@(0.0.255) int]_[*@3 cy])&]
[s2;b17;a17; Sets left`-top logical position (in frame area).&]
[s7;i1120;a17; [%-*C@3 x]-|Distance between parent rectangle left`-edge 
and Ctrl.&]
[s7;i1120;a17; [%-*C@3 y]-|Distance between parent rectangle top`-edge 
and Ctrl.&]
[s7;i1120;a17; [%-*C@3 cx]-|Horizontal size.&]
[s7;i1120;a17; [%-*C@3 cy]-|Vertical size.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:SetFrameRectX`(int`,int`):%- [@(0.0.255) void]_[* SetFrameRectX]([@(0.0.255) i
nt]_[*@3 x], [@(0.0.255) int]_[*@3 cx])&]
[s2;b17;a17; Sets left horizontal logical position (in frame area).&]
[s7;i1120;a17; [%-*C@3 x]-|Distance between parent rectangle left`-edge 
and Ctrl.&]
[s7;i1120;a17; [%-*C@3 cx]-|Horizontal size.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:SetFrameRectY`(int`,int`):%- [@(0.0.255) void]_[* SetFrameRectY]([@(0.0.255) i
nt]_[*@3 y], [@(0.0.255) int]_[*@3 cy])&]
[s2;b17;a17; Sets top vertical logical position (in frame area).&]
[s7;i1120;a17; [%-*C@3 y]-|Distance between parent rectangle top`-edge 
and Ctrl.&]
[s7;i1120;a17; [%-*C@3 cy]-|Vertical size.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:InFrame`(`)const:%- [@(0.0.255) bool]_[* InFrame]()_[@(0.0.255) const]&]
[s7;i1120;a17; [*/ Return value]-|true when Ctrl has position in frame 
area.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:InView`(`)const:%- [@(0.0.255) bool]_[* InView]()_[@(0.0.255) const]&]
[s7;i1120;a17; [*/ Return value]-|true when Ctrl has position in view 
area.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetPos`(`)const:%- [_^`:`:Ctrl`:`:LogPos^ LogPos]_[* GetPos]()_[@(0.0.255) con
st]&]
[s7;i1120;a17; [*/ Return value]-|Logical position of Ctrl&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:RefreshLayout`(`):%- [@(0.0.255) void]_[* RefreshLayout]()&]
[s2;b17;a17; Recomputes layout for Ctrl. This includes calling FrameLayout 
for all frames and calling Layout virtual method. Layout of child 
widgets is recomputed if their size changes.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:RefreshLayoutDeep`(`):%- [@(0.0.255) void]_[* RefreshLayoutDeep]()&]
[s2; Recomputes layout for the whole Ctrl tree `- unlike RefreshLayout, 
recomputes layout of all descendants regardless whether their 
size has changed.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:RefreshParentLayout`(`):%- [@(0.0.255) void]_[* RefreshParentLayout]()&]
[s2;b17;a17; If Ctrl has parent, calls parent`->RefreshLayout().&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:UpdateLayout`(`):%- [@(0.0.255) void]_[* UpdateLayout]()&]
[s2; Recomputes layout of widget by recalculating its frame coverage, 
then, if view size has changed, calls Layout method (this is 
the difference from RefreshLayout, which calls Layout always). 
Layout of child widgets is recomputed if their size changes.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:UpdateParentLayout`(`):%- [@(0.0.255) void]_[* UpdateParentLayout]()&]
[s2; Calls UpdateLayout for parent (if exists).&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:LeftPos`(int`,int`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* LeftPos]([@(0.0.255) i
nt]_[*@3 a], [@(0.0.255) int]_[*@3 size]_`=_STDSIZE)&]
[s2;b17;a17; Sets left horizontal position (in view area).&]
[s7;i1120;a17; [%-*C@3 a]-|Distance from left border of parent.&]
[s7;i1120;a17; [%-*C@3 size]-|Horizontal size.&]
[s7;i1120;a17; [*/ Return value]-|`*this for method chaining.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:RightPos`(int`,int`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* RightPos]([@(0.0.255) i
nt]_[*@3 a], [@(0.0.255) int]_[*@3 size]_`=_STDSIZE)&]
[s2;b17;a17; Sets right horizontal position (in view area).&]
[s7;i1120;a17; [%-*C@3 a]-|Distance from the right border of parent.&]
[s7;i1120;a17; [%-*C@3 size]-|Horizontal size.&]
[s7;i1120;a17; [*/ Return value]-|`*this for method chaining.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:TopPos`(int`,int`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* TopPos]([@(0.0.255) i
nt]_[*@3 a], [@(0.0.255) int]_[*@3 size]_`=_STDSIZE)&]
[s2;b17;a17; Sets top vertical position (in view area).&]
[s7;i1120;a17; [%-*C@3 a]-|Distance from the top border of parent.&]
[s7;i1120;a17; [%-*C@3 size]-|Vertical size.&]
[s7;i1120;a17; [*/ Return value]-|`*this for method chaining.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:BottomPos`(int`,int`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* BottomPos]([@(0.0.255) i
nt]_[*@3 a], [@(0.0.255) int]_[*@3 size]_`=_STDSIZE)&]
[s2;b17;a17; Sets bottom vertical position (in view area).&]
[s7;i1120;a17; [%-*C@3 a]-|Distance from the bottom border of parent.&]
[s7;i1120;a17; [%-*C@3 size]-|Vertical size.&]
[s7;i1120;a17; [*/ Return value]-|`*this for method chaining.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:HSizePos`(int`,int`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* HSizePos]([@(0.0.255) i
nt]_[*@3 a]_`=_[@3 0], [@(0.0.255) int]_[*@3 b]_`=_[@3 0])&]
[s2;b17;a17; Sets horizontal sizing position (in view area).&]
[s7;i1120;a17; [%-*C@3 a]-|Distance from left border of parent.&]
[s7;i1120;a17; [%-*C@3 b]-|Distance from right border of parent.&]
[s7;i1120;a17; [*/ Return value]-|`*this for method chaining.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:VSizePos`(int`,int`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* VSizePos]([@(0.0.255) i
nt]_[*@3 a]_`=_[@3 0], [@(0.0.255) int]_[*@3 b]_`=_[@3 0])&]
[s2;b17;a17; Sets vertical sizing position (in view area).&]
[s7;i1120;a17; [%-*C@3 a]-|Distance form top border of parent.&]
[s7;i1120;a17; [%-*C@3 b]-|Distance from bottom border of parent.&]
[s7;i1120;a17; [*/ Return value]-|`*this for method chaining.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:SizePos`(`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* SizePos]()&]
[s2;b17;a17; Same as VSizePos().HSizePos().&]
[s7;i1120;a17; [*/ Return value]-|`*this for method chaining.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:HCenterPos`(int`,int`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* HCenterPos]([@(0.0.255) i
nt]_[*@3 size]_`=_STDSIZE, [@(0.0.255) int]_[*@3 delta]_`=_[@3 0])&]
[s2;b17;a17; Horizontal centered position (in view area).&]
[s7;i1120;a17; [%-*C@3 size]-|Horizontal size.&]
[s7;i1120;a17; [%-*C@3 delta]-|Offset from centered position (rarely 
used).&]
[s7;i1120;a17; [*/ Return value]-|`*this for method chaining.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:VCenterPos`(int`,int`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* VCenterPos]([@(0.0.255) i
nt]_[*@3 size]_`=_STDSIZE, [@(0.0.255) int]_[*@3 delta]_`=_[@3 0])&]
[s2;b17;a17; Vertical centered position (in view area).&]
[s7;i1120;a17; [%-*C@3 size]-|Vertical size.&]
[s7;i1120;a17; [%-*C@3 delta]-|Offset from centered position (rarely 
used).&]
[s7;i1120;a17; [*/ Return value]-|`*this for method chaining.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:LeftPosZ`(int`,int`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* LeftPosZ]([@(0.0.255) i
nt]_[*@3 a], [@(0.0.255) int]_[*@3 size]_`=_STDSIZE)&]
[s2;b17;a17; Sets left horizontal [/ zoomed ]position (in view area). 
Distances are recalculated using zoom factor to accommodate size 
differences between standard font used during layout design and 
actual standard font.&]
[s7;i1120;a17; [%-*C@3 a]-|Distance from the left border of parent.&]
[s7;i1120;a17; [%-*C@3 size]-|Horizontal size.&]
[s7;i1120;a17; [*/ Return value]-|`*this for method chaining.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:RightPosZ`(int`,int`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* RightPosZ]([@(0.0.255) i
nt]_[*@3 a], [@(0.0.255) int]_[*@3 size]_`=_STDSIZE)&]
[s2;b17;a17; Sets right horizontal [/ zoomed ]position (in view area). 
Distances are recalculated using zoom factor to accommodate size 
differences between standard font used during layout design and 
actual standard font.&]
[s7;i1120;a17; [%-*C@3 a]-|Distance from the right border of parent.&]
[s7;i1120;a17; [%-*C@3 size]-|Horizontal size.&]
[s2;b17;a17; [*/ Return value]-|`*this for method chaining.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:TopPosZ`(int`,int`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* TopPosZ]([@(0.0.255) i
nt]_[*@3 a], [@(0.0.255) int]_[*@3 size]_`=_STDSIZE)&]
[s2;b17;a17; Sets top vertical [/ zoomed ]position (in view area). 
Distances are recalculated using zoom factor to accommodate size 
differences between standard font used during layout design and 
actual standard font.&]
[s7;i1120;a17; [%-*C@3 a]-|Distance from the top border of parent.&]
[s7;i1120;a17; [%-*C@3 size]-|Vertical size.&]
[s7;i1120;a17; [*/ Return value]-|`*this for method chaining.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:BottomPosZ`(int`,int`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* BottomPosZ]([@(0.0.255) i
nt]_[*@3 a], [@(0.0.255) int]_[*@3 size]_`=_STDSIZE)&]
[s2;b17;a17; Sets bottom vertical [/ zoomed ]position (in view area). 
Distances are recalculated using zoom factor to accommodate size 
differences between standard font used during layout design and 
actual standard font.&]
[s7;i1120;a17; [%-*C@3 a]-|Distance from the bottom border of parent.&]
[s7;i1120;a17; [%-*C@3 size]-|Vertical size.&]
[s7;i1120;a17; [*/ Return value]-|`*this for method chaining.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:HSizePosZ`(int`,int`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* HSizePosZ]([@(0.0.255) i
nt]_[*@3 a]_`=_[@3 0], [@(0.0.255) int]_[*@3 b]_`=_[@3 0])&]
[s2;b17;a17; Sets vertical [/ zoomed ]sizing position (in view area). 
Distances are recalculated using zoom factor to accommodate size 
differences between standard font used during layout design and 
actual standard font.&]
[s7;i1120;a17; [%-*C@3 a]-|Distance form top border of parent.&]
[s7;i1120;a17; [%-*C@3 b]-|Distance from bottom border of parent.&]
[s7;i1120;a17; [*/ Return value]-|`*this for method chaining.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:VSizePosZ`(int`,int`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* VSizePosZ]([@(0.0.255) i
nt]_[*@3 a]_`=_[@3 0], [@(0.0.255) int]_[*@3 b]_`=_[@3 0])&]
[s2;b17;a17; Sets vertical [/ zoomed ]sizing position (in view area). 
Distances are recalculated using zoom factor to accommodate size 
differences between standard font used during layout design and 
actual standard font.&]
[s7;i1120;a17; [%-*C@3 a]-|Distance form top border of parent.&]
[s7;i1120;a17; [%-*C@3 b]-|Distance from bottom border of parent.&]
[s7;i1120;a17; [*/ Return value]-|`*this for method chaining.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:HCenterPosZ`(int`,int`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* HCenterPosZ]([@(0.0.255) i
nt]_[*@3 size]_`=_STDSIZE, [@(0.0.255) int]_[*@3 delta]_`=_[@3 0])&]
[s2;b17;a17; Horizontal centered [/ zoomed ]position (in view area). 
Distances are recalculated using zoom factor to accommodate size 
differences between standard font used during layout design and 
actual standard font.&]
[s7;i1120;a17; [%-*C@3 size]-|Horizontal size.&]
[s7;i1120;a17; [%-*C@3 delta]-|Offset from centered position (rarely 
used).&]
[s7;i1120;a17; [*/ Return value]-|`*this for method chaining.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:VCenterPosZ`(int`,int`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* VCenterPosZ]([@(0.0.255) i
nt]_[*@3 size]_`=_STDSIZE, [@(0.0.255) int]_[*@3 delta]_`=_[@3 0])&]
[s2;b17;a17; Vertical centered [/ zoomed] position (in view area). 
Distances are recalculated using zoom factor to accommodate size 
differences between standard font used during layout design and 
actual standard font.&]
[s7;i1120;a17; [%-*C@3 size]-|Vertical size.&]
[s7;i1120;a17; [%-*C@3 delta]-|Offset from centered position (rarely 
used).&]
[s7;i1120;a17; [*/ Return value]-|`*this for method chaining.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetRect`(`)const:%- [_^`:`:Rect^ Rect]_[* GetRect]()_[@(0.0.255) const]&]
[s7;i1120;a17; [*/ Return value]-|Returns current position in parent. 
It is either position in view or frame coordinates.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetScreenRect`(`)const:%- [_^`:`:Rect^ Rect]_[* GetScreenRect]()_[@(0.0.255) c
onst]&]
[s7;i1120;a17; [*/ Return value]-|Returns current position in absolute 
screen coordinates.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetView`(`)const:%- [_^`:`:Rect^ Rect]_[* GetView]()_[@(0.0.255) const]&]
[s7;i1120;a17; [*/ Return value]-|Returns position of view rectangle 
in frame coordinates.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetScreenView`(`)const:%- [_^`:`:Rect^ Rect]_[* GetScreenView]()_[@(0.0.255) c
onst]&]
[s7;i1120;a17; [*/ Return value]-|Returns position of view rectangle 
in absolute screen coordinates.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetSize`(`)const:%- [_^`:`:Size^ Size]_[* GetSize]()_[@(0.0.255) const]&]
[s7;i1120;a17; [*/ Return value]-|Returns size of view rectangle of 
Ctrl.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetVisibleScreenRect`(`)const:%- [_^`:`:Rect^ Rect]_[* GetVisibleScreenRect](
)_[@(0.0.255) const]&]
[s7;i1120;a17; [*/ Return value]-|Returns current position in parent 
intersected with either parent`'s visible screen rectangle for 
frame Ctrl (as obtained using GetVisibleScreenRect) or parent`'s 
screen view rectangle for view Ctrl (obtained using GetVisibleScreenView). 
This method is useful when rectangle of Ctrl exceeds it`'s parent 
area `- in this case this method returns part of Ctrl that is 
not clipped out by parent`'s are limits.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetVisibleScreenView`(`)const:%- [_^`:`:Rect^ Rect]_[* GetVisibleScreenView](
)_[@(0.0.255) const]&]
[s7;i1120;a17; [*/ Return value]-|Returns current position of view area 
intersected with either parent`'s visible screen rectangle for 
frame Ctrl (as obtained using GetVisibleScreenRect) or parent`'s 
screen view rectangle for view Ctrl (obtained using GetVisibleScreenView). 
This method is useful when rectangle of Ctrl exceeds it`'s parent 
area `- in this case this method returns part of Ctrl view that 
is not clipped out by parent`'s are limits.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetWorkArea`(`)const:%- [_^Rect^ Rect]_[* GetWorkArea]()_[@(0.0.255) const]&]
[s2; Returns the work area (the maximum rectangle that window can 
use) for screen that this window is in.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:AddFrameSize`(int`,int`)const:%- [_^`:`:Size^ Size]_[* AddFrameSize]([@(0.0.255) i
nt]_[*@3 cx], [@(0.0.255) int]_[*@3 cy])_[@(0.0.255) const]&]
[s2;b17;a17; Computes size of Ctrl for given size of view and actual 
set of frames.&]
[s7;i1120;a17; [%-*C@3 cx]-|Width.&]
[s7;i1120;a17; [%-*C@3 cy]-|Height.&]
[s7;i1120;a17; [*/ Return value]-|Size of Ctrl that would have requested 
view size.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:AddFrameSize`(Size`)const:%- [_^`:`:Size^ Size]_[* AddFrameSize]([_^`:`:Size^ S
ize]_[*@3 sz])_[@(0.0.255) const]&]
[s2;b17;a17; Same as AddFrameSize(sz.cx, sz.cy).&]
[s7;i1120;a17; [%-*C@3 sz]-|Size.&]
[s7;i1120;a17; [*/ Return value]-|Size of Ctrl that would have requested 
view size.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:Refresh`(const Rect`&`):%- [@(0.0.255) void]_[* Refresh]([@(0.0.255) const]_[_^Rect^ R
ect][@(0.0.255) `&]_[*@3 r])&]
[s2; Marks requested rectangle of view area for repainting. Actual 
repaint is deferred for performance reasons.&]
[s7;i1120;a17; [%-*C@3 r]-|Rectangle in view.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:Refresh`(int`,int`,int`,int`):%- [@(0.0.255) void]_[* Refresh]([@(0.0.255) int
]_[*@3 x], [@(0.0.255) int]_[*@3 y], [@(0.0.255) int]_[*@3 cx], [@(0.0.255) int]_[*@3 cy])&]
[s2;b17;a17; Marks requested rectangle of view area for repainting. 
Actual repaint is deferred for performance reasons.&]
[s7;i1120;a17; [%-*C@3 x]-|Left position of rectangle.&]
[s7;i1120;a17; [%-*C@3 y]-|Top position of rectangle.&]
[s7;i1120;a17; [%-*C@3 cx]-|Width.&]
[s7;i1120;a17; [%-*C@3 cy]-|Height.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:Refresh`(`):%- [@(0.0.255) void]_[* Refresh]()&]
[s2;b17;a17; Marks whole view area for repainting.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:IsFullRefresh`(`)const:%- [@(0.0.255) bool]_[* IsFullRefresh]()_[@(0.0.255) co
nst]&]
[s7;i1120;a17; [*/ Return value]-|true when whole view area is marked 
for repainting but was not repainted yet.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:RefreshFrame`(const Rect`&`):%- [@(0.0.255) void]_[* RefreshFrame]([@(0.0.255) c
onst]_[_^`:`:Rect^ Rect][@(0.0.255) `&]_[*@3 r])&]
[s2;b17;a17; Marks requested rectangle of frame area for repainting. 
Actual repainting is deferred for performance reasons.&]
[s7;i1120;a17; [%-*C@3 r]-|Area to repaint.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:RefreshFrame`(int`,int`,int`,int`):%- [@(0.0.255) void]_[* RefreshFrame]([@(0.0.255) i
nt]_[*@3 x], [@(0.0.255) int]_[*@3 y], [@(0.0.255) int]_[*@3 cx], [@(0.0.255) int]_[*@3 cy])&]
[s2;b17;a17; Marks requested rectangle of frame area for repainting. 
Actual repaint is deferred for performance reasons.&]
[s7;i1120;a17; [%-*C@3 x]-|Left position of rectangle.&]
[s7;i1120;a17; [%-*C@3 y]-|Top position of rectangle.&]
[s7;i1120;a17; [%-*C@3 cx]-|Width.&]
[s7;i1120;a17; [%-*C@3 cy]-|Height.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:RefreshFrame`(`):%- [@(0.0.255) void]_[* RefreshFrame]()&]
[s2;b17;a17; Marks whole Ctrl area for repainting.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:ScrollView`(const Rect`&`,int`,int`):%- [@(0.0.255) void]_[* ScrollView]([@(0.0.255) c
onst]_[_^Rect^ Rect][@(0.0.255) `&]_[*@3 r], [@(0.0.255) int]_[*@3 dx], 
[@(0.0.255) int]_[*@3 dy])&]
[s2; Marks requested view rectangle for repainting, indicating that 
part of this repaint can be done by scrolling current content 
of rectangle. Note that actual scroll is deferred to repaint 
and that U`+`+ is still allowed to solve the situation by repainting 
rather than scrolling.&]
[s7;i1120;a17; [%-*C@3 r]-|Area for repainting.&]
[s7;i1120;a17; [%-*C@3 dx]-|Horizontal scroll.&]
[s7;i1120;a17; [%-*C@3 dy]-|Vertical scroll.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:ScrollView`(int`,int`,int`,int`,int`,int`):%- [@(0.0.255) void]_[* ScrollVie
w]([@(0.0.255) int]_[*@3 x], [@(0.0.255) int]_[*@3 y], [@(0.0.255) int]_[*@3 cx], 
[@(0.0.255) int]_[*@3 cy], [@(0.0.255) int]_[*@3 dx], [@(0.0.255) int]_[*@3 dy])&]
[s2;b17;a17; Marks requested view rectangle for repainting, indicating 
that part of this repaint can be done by scrolling current content 
of rectangle. Note that actual scroll is deferred to repaint 
and that U`+`+ is still allowed to solve the situation by repainting 
rather than scrolling.&]
[s7;i1120;a17; [%-*C@3 r]-|Area for repainting.&]
[s7;i1120;a17; [%-*C@3 x]-|Left position of rectangle.&]
[s7;i1120;a17; [%-*C@3 y]-|Top position of rectangle.&]
[s7;i1120;a17; [%-*C@3 cx]-|Width.&]
[s7;i1120;a17; [%-*C@3 cy]-|Height.&]
[s7;i1120;a17; [%-*C@3 dx]-|Horizontal scroll.&]
[s7;i1120;a17; [%-*C@3 dy]-|Vertical scroll.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:ScrollView`(int`,int`):%- [@(0.0.255) void]_[* ScrollView]([@(0.0.255) int]_[*@3 d
x], [@(0.0.255) int]_[*@3 dy])&]
[s2;b17;a17; Marks while view area for repainting, indicating that 
part of this repaint can be done by scrolling current content 
of rectangle. Note that actual scroll is deferred to repaint 
and that U`+`+ is still allowed to solve the situation by repainting 
rather than scrolling.&]
[s7;i1120;a17; [%-*C@3 dx]-|Horizontal scroll.&]
[s7;i1120;a17; [%-*C@3 dy]-|Vertical scroll.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:ScrollView`(const Rect`&`,Size`):%- [@(0.0.255) void]_[* ScrollView]([@(0.0.255) c
onst]_[_^`:`:Rect^ Rect][@(0.0.255) `&]_[*@3 r], [_^`:`:Size^ Size]_[*@3 delta])&]
[s2;b17;a17; Same as ScrollView(r, delta.cx, delta.cy).&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:ScrollView`(Size`):%- [@(0.0.255) void]_[* ScrollView]([_^`:`:Size^ Size]_[*@3 d
elta])&]
[s2;b17;a17; Same as ScrollView(delta.cx, delta.cy).&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:Sync`(`):%- [@(0.0.255) void]_[* Sync]()&]
[s2;b17;a17; Forces immediate repainting of areas marked using Refresh, 
RefreshFrame or ScrollView methods.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:Sync`(const Rect`&`):%- [@(0.0.255) void]_[* Sync]([@(0.0.255) const]_[_^Rect^ R
ect][@(0.0.255) `&]_[*@3 r])&]
[s2; Forces immediate repainting of areas marked using Refresh, RefreshFrame 
or ScrollView methods, limited with intersection of given rectangle.&]
[s7;i1120;a17; [%-*C@3 r]-|Rectangle.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:OverrideCursor`(const Image`&`):%- [@(0.0.255) static] 
[_^Image^ Image]_[* OverrideCursor]([@(0.0.255) const]_[_^Image^ Image][@(0.0.255) `&]_[*@3 m
])&]
[s2; Overrides mouse cursor to [%-*@3 m]. To end the override, call 
it again with the Image returned by the override call.&]
[s2; &]
[s4;%- &]
[s5;:Ctrl`:`:DrawCtrl`(Draw`&`,int`,int`):%- [@(0.0.255) void]_[* DrawCtrl]([_^Draw^ Draw][@(0.0.255) `&
]_[*@3 w], [@(0.0.255) int]_[*@3 x]_`=_[@3 0], [@(0.0.255) int]_[*@3 y]_`=_[@3 0])&]
[s2; Draws Ctrl at specified position. This is intended for utility 
purposes like taking screen`-shots. This version Draws Ctrl [/ without] 
background (supplied by parent).&]
[s7;i1120;a17; [%-*C@3 w]-|Target Draw.&]
[s7;i1120;a17; [%-*C@3 x, ][*C@3 y]-|Position.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:DrawCtrlWithParent`(Draw`&`,int`,int`):%- [@(0.0.255) void]_[* DrawCtrlWithP
arent]([_^Draw^ Draw][@(0.0.255) `&]_[*@3 w], [@(0.0.255) int]_[*@3 x]_`=_[@3 0], 
[@(0.0.255) int]_[*@3 y]_`=_[@3 0])&]
[s2; Draws Ctrl at specified position. This is intended for utility 
purposes like taking screen`-shots. This version Draws Ctrl [/ with] 
background (supplied by parent).&]
[s7;i1120;a17; [%-*C@3 w]-|Target Draw.&]
[s7;i1120;a17; [%-*C@3 x, ][*C@3 y]-|Position.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:HasChild`(Ctrl`*`)const:%- [@(0.0.255) bool]_[* HasChild]([_^`:`:Ctrl^ Ctrl]_`*
[*@3 ctrl])_[@(0.0.255) const]&]
[s2;b17;a17; Tests whether Ctrl has specified [/ direct] child.&]
[s7;i1120;a17; [%-*C@3 ctrl]-|Child.&]
[s7;i1120;a17; [*/ Return value]-|true if ctrl is child.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:HasChildDeep`(Ctrl`*`)const:%- [@(0.0.255) bool]_[* HasChildDeep]([_^`:`:Ctrl^ C
trl]_`*[*@3 ctrl])_[@(0.0.255) const]&]
[s2;b17;a17; Tests whether Ctrl has specified ctrl in its child tree 
(direct or indirect).&]
[s7;i1120;a17; [%-*C@3 ctrl]-|Child.&]
[s7;i1120;a17; [*/ Return value]-|true if ctrl is in child tree.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:IgnoreMouse`(bool`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* IgnoreMouse]([@(0.0.255) b
ool]_[*@3 b]_`=_[@(0.0.255) true])&]
[s2;b17;a17; Sets ignore`-mouse flag. When active, Ctrl is ignored 
for mouse input. That is important for static Ctrls that cover 
other Ctrls, like LabelBox `- this flag ensures, that mouse input 
is not consumed by LabelBox, but is distributed to Ctrls that 
lay inside it.&]
[s7;i1120;a17; [%-*C@3 b]-|Value of flag.&]
[s7;i1120;a17; [*/ Return value]-|`*this for method chaining.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:NoIgnoreMouse`(`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* NoIgnoreMouse]()&]
[s2;b17;a17; Same as IgnoreMouse(false).&]
[s7;i1120;a17; [*/ Return value]-|`*this for method chaining.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:IsIgnoreMouse`(`)const:%- [@(0.0.255) bool]_[* IsIgnoreMouse]()_[@(0.0.255) co
nst]&]
[s2; Returns the ignore`-mouse flag (see IgnoreMouse).&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:HasMouse`(`)const:%- [@(0.0.255) bool]_[* HasMouse]()_[@(0.0.255) const]&]
[s7;i1120;a17; [*/ Return value]-|true when Ctrl is target for mouse 
events.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:HasMouseDeep`(`)const:%- [@(0.0.255) bool]_[* HasMouseDeep]()_[@(0.0.255) cons
t]&]
[s2; Returns true if Ctrl or any of its descendants is target for 
mouse events.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:HasMouseInFrame`(const Rect`&`)const:%- [@(0.0.255) bool]_[* HasMouseInFrame
]([@(0.0.255) const]_[_^Rect^ Rect][@(0.0.255) `&]_[*@3 r])_[@(0.0.255) const]&]
[s7;i1120;a17; [%-*C@3 r]-|rectangle in frame area.&]
[s7;i1120;a17; [*/ Return value]-|true when Ctrl is target for mouse 
events and mouse pointer is inside specified frame area rectangle.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:HasMouseIn`(const Rect`&`)const:%- [@(0.0.255) bool]_[* HasMouseIn]([@(0.0.255) c
onst]_[_^Rect^ Rect][@(0.0.255) `&]_[*@3 r])_[@(0.0.255) const]&]
[s2; Returns true when Ctrl is target for mouse events and mouse 
pointer is inside specified view area rectangle.&]
[s3;%- &]
[s4;%- &]
[s5;:Upp`:`:Ctrl`:`:HasMouseIn`(`)const:%- [@(0.0.255) bool] [* HasMouseIn]() 
[@(0.0.255) const]&]
[s2; Returns true when mouse pointer is inside view area.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetMouseViewPos`(`)const:%- [_^Point^ Point]_[* GetMouseViewPos]()_[@(0.0.255) c
onst]&]
[s2; Returns the position of mouse relative to the view area. Note 
that the result can negative point or point outside &]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetMouseCtrl`(`):%- [@(0.0.255) static] [_^`:`:Ctrl^ Ctrl]_`*[* GetMouseCtrl](
)&]
[s7;i1120;a17; Returns current target for mouse events.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:IgnoreMouseClick`(`):%- [@(0.0.255) static] [@(0.0.255) void]_[* IgnoreMouseCl
ick]()&]
[s2;b17;a17; Forces framework to ignore all mouse events till next 
button`-up event. This is good tool to solve some corner cases, 
like popup window closed by button click when mouse pointer is 
over its owner as well (TopWindow`::Close calls this function).&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:IgnoreMouseUp`(`):%- [@(0.0.255) static] [@(0.0.255) void]_[* IgnoreMouseUp]()
&]
[s2;b17;a17; Invokes IgnoreMouseClick if some of mouse buttons is 
pressed.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:UnIgnoreMouse`(`):%- [@(0.0.255) static] [@(0.0.255) void]_[* UnIgnoreMouse]()
&]
[s2; Cancels the effect or IgnoreMouseClick and IgnoreMouseUp (clicks 
are not ignored anymore).&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:SetCapture`(`):%- [@(0.0.255) bool]_[* SetCapture]()&]
[s2;b17;a17; Sets mouse capture for Ctrl. This method should be called 
in MouseLeft or MouseRight methods only. Ctrl will receive all 
mouse input until ReleaseCapture is called or mouse button is 
released.&]
[s7;i1120;a17; [*/ Return value]-|True when SetCapture was successful 
(usually you can ignore this return value).&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:ReleaseCapture`(`):%- [@(0.0.255) bool]_[* ReleaseCapture]()&]
[s2;b17;a17; Release Ctrl`'s mouse capture.&]
[s7;i1120;a17; [*/ Return value]-|True when mouse capture was released.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:HasCapture`(`)const:%- [@(0.0.255) bool]_[* HasCapture]()_[@(0.0.255) const]&]
[s7;i1120;a17; [*/ Return value]-|True if Ctrl has mouse capture.&]
[s3;%- &]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetCaptureCtrl`(`):%- [@(0.0.255) static] [_^Ctrl^ Ctrl]_`*[* GetCaptureCtrl](
)&]
[s2; Returns a pointer to the Ctrl that is currently capturing the 
mouse.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:ReleaseCtrlCapture`(`):%- [@(0.0.255) static] [@(0.0.255) bool]_[* ReleaseCtrl
Capture]()&]
[s2;b17;a17; If any of application`'s Ctrls has mouse capture, it 
is released.&]
[s7;i1120;a17; [*/ Return value]-|True if mouse capture was released.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:SetFocus`(`):%- [@(0.0.255) bool]_[* SetFocus]()&]
[s2;b17;a17; Sets keyboard input focus to the Ctrl. Ctrl is first 
to receive keyboard events via Key method as long as it has keyboard 
input focus. When Ctrl denies keyboard event (by returning false 
from Key method), it is passed to its parent`'s Key method and 
so on.&]
[s7;i1120;a17; [*/ Return value]-|True if setting focus was successful.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:HasFocus`(`)const:%- [@(0.0.255) bool]_[* HasFocus]()_[@(0.0.255) const]&]
[s7;i1120;a17; [*/ Return value]-|True if Ctrl has keyboard input focus.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:HasFocusDeep`(`)const:%- [@(0.0.255) bool]_[* HasFocusDeep]()_[@(0.0.255) cons
t]&]
[s7;i1120;a17; [*/ Return value]-|True if Ctrl or any of its descendants 
has focus or is equal to GetOwnerCtrl of any active popup.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:WantFocus`(bool`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* WantFocus]([@(0.0.255) b
ool]_[*@3 ft]_`=_[@(0.0.255) true])&]
[s2;b17;a17; Indicates whether Ctrl wants focus to be passed to it 
by U`+`+, when navigating through the dialog using Tab (or Shift`+Tab) 
key.&]
[s7;i1120;a17; [%-*C@3 ft]-|true to indicate that Ctrl wants focus.&]
[s7;i1120;a17; [*/ Return value]-|Same Ctrl for method chaining.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:NoWantFocus`(`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* NoWantFocus]()&]
[s7;i1120;a17; [*/ Return value]-|Same Ctrl for method chaining.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:IsWantFocus`(`)const:%- [@(0.0.255) bool]_[* IsWantFocus]()_[@(0.0.255) const]&]
[s2;b17;a17;%- Checks whether Ctrl has WantFocus acti.&]
[s7;i1120;a17; [*/ Return value]-|true, when Ctrl wants focus.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:InitFocus`(bool`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* InitFocus]([@(0.0.255) b
ool]_[*@3 ft]_`=_[@(0.0.255) true])&]
[s2;b17;a17; Indicates that Ctrl is eligible to obtain focus upon 
opening of dialog or in other similar situations.&]
[s7;i1120;a17; [%-*C@3 ft]-|true to indicate Ctrl is eligible.&]
[s7;i1120;a17; [*/ Return value]-|Same Ctrl for method chaining.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:NoInitFocus`(`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* NoInitFocus]()&]
[s2;b17;a17; Same as InitFocus(false).&]
[s7;i1120;a17; [*/ Return value]-|Same Ctrl for method chaining.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:IsInitFocus`(`):%- [@(0.0.255) bool]_[* IsInitFocus]()&]
[s7;i1120;a17; [*/ Return value]-|true when Ctrl wants init focus.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:SetWantFocus`(`):%- [@(0.0.255) bool]_[* SetWantFocus]()&]
[s2;b17;a17; If Ctrl wants focus (WantFocus(true) was called for 
it), set focus to Ctrl, otherwise nothing happens.&]
[s7;i1120;a17; [*/ Return value]-|true if focus was set.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetFocusChild`(`)const:%- [_^`:`:Ctrl^ Ctrl]_`*[* GetFocusChild]()_[@(0.0.255) c
onst]&]
[s2;b17;a17; If any immediate child of Ctrl has focus, returns pointer 
to it.&]
[s7;i1120;a17; [*/ Return value]-|Pointer to child with focus or NULL 
if no such exists.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetFocusChildDeep`(`)const:%- [_^`:`:Ctrl^ Ctrl]_`*[* GetFocusChildDeep]()_[@(0.0.255) c
onst]&]
[s2;b17;a17; If any child of Ctrl`'s child tree has focus, returns 
pointer to it.&]
[s7;i1120;a17; [*/ Return value]-|&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:CancelModeDeep`(`):%- [@(0.0.255) void]_[* CancelModeDeep]()&]
[s2;b17;a17; Calls CancelMode virtual method for Ctrl and all of 
its descendants.&]
[s3;%- &]
[s4;%- &]
[s5;:Upp`:`:Ctrl`:`:CancelPreedit`(`):%- [@(0.0.255) void]_[* CancelPreedit]()&]
[s2; Terminates any input method composition in progress, if possible. 
Text input widgets typically call this on status change, like 
new cursor position or new text through SetData.&]
[s3;%- &]
[s4;%- &]
[s5;:Upp`:`:Ctrl`:`:CancelMyPreedit`(`):%- [@(0.0.255) void]_[* CancelMyPreedit]()&]
[s2; Calls CancelPreedit if this widget has keyboard focus.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetFocusCtrl`(`):%- [@(0.0.255) static] [_^`:`:Ctrl^ Ctrl]_`*[* GetFocusCtrl](
)&]
[s7;i1120;a17; [*/ Return value]-|Ctrl that has focus or NULL if no 
Ctrl of application has it.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:IterateFocusForward`(Ctrl`*`,Ctrl`*`,bool`,bool`,bool`):%- [@(0.0.255) sta
tic] [@(0.0.255) bool]_[* IterateFocusForward]([_^Ctrl^ Ctrl]_`*[*@3 ctrl], 
[_^Ctrl^ Ctrl]_`*[*@3 top], [@(0.0.255) bool]_[*@3 noframe]_`=_[@(0.0.255) false], 
[@(0.0.255) bool]_[*@3 init]_`=_[@(0.0.255) false], [@(0.0.255) bool]_[*@3 all]_`=_[@(0.0.255) f
alse])&]
[s2; Tries to move focus to next `"appropriate`" Ctrl, like when 
Tab key is pressed in the dialog. Appropriate Ctrl needs to have 
WantFocus flag, be visible and enabled.&]
[s7;i1120;a17; [%-*C@3 ctrl]-|Ctrl with focus.&]
[s7;i1120;a17; [%-*C@3 top]-|Top Ctrl `- function cycles only between 
this Ctrl subtree.&]
[s7;i1120;a17; [%-*C@3 noframe]-|Indicates that frame Ctrls are to be 
excluded.&]
[s7;i1120;a17; [*/ Return value]-|true when focus was successfully moved.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:IterateFocusBackward`(Ctrl`*`,Ctrl`*`,bool`,bool`):%- [@(0.0.255) static] 
[@(0.0.255) bool]_[* IterateFocusBackward]([_^Ctrl^ Ctrl]_`*[*@3 ctrl], 
[_^Ctrl^ Ctrl]_`*[*@3 top], [@(0.0.255) bool]_[*@3 noframe]_`=_[@(0.0.255) false], 
[@(0.0.255) bool]_[*@3 all]_`=_[@(0.0.255) false])&]
[s2; Tries to move focus to previous appropriate Ctrl, like when 
Tab key is pressed in the dialog. `"Appropriate`" Ctrl needs 
to have WantFocus flag, be visible and enabled.&]
[s7;i1120;a17; [%-*C@3 ctrl]-|Ctrl with focus.&]
[s7;i1120;a17; [%-*C@3 top]-|Top Ctrl `- function cycles only between 
this Ctrl subtree.&]
[s7;i1120;a17; [%-*C@3 noframe]-|Indicates that frame Ctrls are to be 
excluded.&]
[s7;i1120;a17; [*C@3 init]-|Ctrl must have InitFocus flag.&]
[s7;i1120;a17; [*/ Return value]-|true when focus was successfully moved.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:AccessKeyBit`(byte`):%- [@(0.0.255) static] [_^`:`:dword^ dword]_[* AccessKeyB
it]([_^`:`:byte^ byte]_[*@3 accesskey])&]
[s2;b17;a17; Returns bit`-mask for specified access`-key.&]
[s7;i1120;a17; [%-*C@3 accesskey]-|Access`-key. It should be plain ASCII 
value of access`-key.&]
[s7;i1120;a17; [*/ Return value]-|Access`-key bitmask. Note that only 
`'A`' `- `'Z`' have distinct bit`-masks as those are only access`-keys 
distributed automatically.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetAccessKeysDeep`(`)const:%- [_^`:`:dword^ dword]_[* GetAccessKeysDeep]()_[@(0.0.255) c
onst]&]
[s5;:Ctrl`:`:GetAccessKeysDeep`(`)const:%- [_^`:`:dword^ dword]_[* GetAccessKeysDeep]()_[@(0.0.255) c
onst]&]
[s2;b17;a17; Returns binary or of Ctrl`'s GetAccessKey method results 
with the result of calling GetAccessKeyDeep for all children. 
In other words, returns key coverage for the whole Ctrl tree.&]
[s7;i1120;a17; [*/ Return value]-|Access`-keys used by Ctrl and its 
descendants.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:DistributeAccessKeys`(`):%- [@(0.0.255) void]_[* DistributeAccessKeys]()&]
[s2;b17;a17; Triggers automatic distribution of access keys. This 
is implemented as gathering all already used access keys using 
GetAccessKeys method and then using AssignAccessKeys method with 
this value to distribute rest of keys (in other words, it is 
equivalent of AssignAccessKeys(GetAccessKeys())).&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:RefreshAccessKeys`(`):%- [@(0.0.255) void]_[* RefreshAccessKeys]()&]
[s2;b17;a17; Invokes Refresh for this Ctrl or any descendant with 
any access`-key assigned.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:VisibleAccessKeys`(`):%- [@(0.0.255) bool]_[* VisibleAccessKeys]()&]
[s7;i1120;a17; [*/ Return value]-|True if according to current access`-key 
model there should be visible graphical representation (usually 
underline) of access`-keys.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:Show`(bool`):%- [@(0.0.255) void]_[* Show]([@(0.0.255) bool]_[*@3 show]_`=_[@(0.0.255) t
rue])&]
[s2;b17;a17; Sets visibility flag for Ctrl.&]
[s7;i1120;a17; [%-*C@3 show]-|true indicates that Ctrl should be visible.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:Hide`(`):%- [@(0.0.255) void]_[* Hide]()&]
[s2;b17;a17; Same as Show(false).&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:IsShown`(`)const:%- [@(0.0.255) bool]_[* IsShown]()_[@(0.0.255) const]&]
[s7;i1120;a17; [*/ Return value]-|visibility flag for Ctrl.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:IsVisible`(`)const:%- [@(0.0.255) bool]_[* IsVisible]()_[@(0.0.255) const]&]
[s7;i1120;a17; [*/ Return value]-|true if Ctrl is currently visible 
on the screen. Ctrl is visible if it has visibility flag set, 
its parent is visible and its top`-level Ctrl is open.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:Enable`(bool`):%- [@(0.0.255) void]_[* Enable]([@(0.0.255) bool]_[*@3 enable]_`=
_[@(0.0.255) true])&]
[s2;b17;a17; Enables or disables Ctrl.&]
[s7;i1120;a17; [%-*C@3 enable]-|true indicates that Ctrl should be enabled.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:Disable`(`):%- [@(0.0.255) void]_[* Disable]()&]
[s2;b17;a17; Same as Enable(false).&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:IsEnabled`(`)const:%- [@(0.0.255) bool]_[* IsEnabled]()_[@(0.0.255) const]&]
[s7;i1120;a17; [*/ Return value]-|true if Ctrl is enabled.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:SetEditable`(bool`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* SetEditable]([@(0.0.255) b
ool]_[*@3 editable]_`=_[@(0.0.255) true])&]
[s2;b17;a17; Sets editable or read`-only mode of Ctrl. Specific Ctrls 
can check this flag using IsEditable method and behave accordingly.&]
[s7;i1120;a17; [%-*C@3 editable]-|true indicates that Ctrl is editable.&]
[s7;i1120;a17; [*/ Return value]-|`*this for method chaining.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:SetReadOnly`(`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* SetReadOnly]()&]
[s2;b17;a17; Same as SetEditable(false).&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:IsEditable`(`)const:%- [@(0.0.255) bool]_[* IsEditable]()_[@(0.0.255) const]&]
[s7;i1120;a17; [*/ Return value]-|true if Ctrl is editable.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:IsReadOnly`(`)const:%- [@(0.0.255) bool]_[* IsReadOnly]()_[@(0.0.255) const]&]
[s2;b17;a17; Same as !IsEditable().&]
[s3;%- &]
[s4;%- &]
[s5;:Upp`:`:Ctrl`:`:ClearModifyDeep`(`):%- [@(0.0.255) void]_[* ClearModifyDeep]()&]
[s2; Clear modify flag (by calling ClearModify) for the widgets and 
all its descendants.&]
[s3;%- &]
[s4;%- &]
[s5;:Upp`:`:Ctrl`:`:IsModifiedDeep`(`)const:%- [@(0.0.255) bool]_[* IsModifiedDeep]()_[@(0.0.255) c
onst]&]
[s2; Returns true if widget or any of its descendants have modify 
flag active.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:UpdateRefresh`(`):%- [@(0.0.255) void]_[* UpdateRefresh]()&]
[s2;b17;a17; Calls both Update and Refresh methods.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:Update`(`):%- [@(0.0.255) void]_[* Update]()&]
[s2;b17;a17; Same as SetModify().&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:Action`(`):%- [@(0.0.255) void]_[* Action]()&]
[s2;b17;a17; Invokes default Ctrl callback `- WhenAction. Action 
actually makes a copy of WhenAction `- this ensures that the 
Event<> object is not destroyed during the call.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:UpdateAction`(`):%- [@(0.0.255) void]_[* UpdateAction]()&]
[s2;b17;a17; Calls Update and then Action.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:UpdateActionRefresh`(`):%- [@(0.0.255) void]_[* UpdateActionRefresh]()&]
[s2;b17;a17; Calls Update, then Action, then Refresh. Typically called 
after user changes values of Ctrl.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:Transparent`(bool`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* Transparent]([@(0.0.255) b
ool]_[*@3 bp]_`=_[@(0.0.255) true])&]
[s2;b17;a17; Sets transparency flag of Ctrl. If transparency flag 
is disabled, U`+`+ can paint Ctrl in more effective way.&]
[s7;i1120;a17; [%-*C@3 bp]-|Transparency flag.&]
[s7;i1120;a17; [*/ Return value]-|`*this for method chaining.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:NoTransparent`(`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* NoTransparent]()&]
[s7;i1120;a17; [*/ Return value]-|Transparent(false).&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:IsTransparent`(`)const:%- [@(0.0.255) bool]_[* IsTransparent]()_[@(0.0.255) co
nst]&]
[s7;i1120;a17; [*/ Return value]-|Value of transparency flag.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:ActiveX`(bool`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* ActiveX]([@(0.0.255) boo
l]_[*@3 ax]_`=_[@(0.0.255) true])&]
[s2;b17;a17; Special flag used for ActiveX Ctrls implementation.&]
[s6; Windows specific.&]
[s7;i1120;a17; [%-*C@3 ax]-|true `- Ctrl is ActiveX control&]
[s7;i1120;a17; [*/ Return value]-|`*this for method chaining.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:NoActiveX`(`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* NoActiveX]()&]
[s7;i1120;a17; [*/ Return value]-|ActiveX(false).&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:IsActiveX`(`)const:%- [@(0.0.255) bool]_[* IsActiveX]()_[@(0.0.255) const]&]
[s7;i1120;a17; [*/ Return value]-|Value of ActiveX flag.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:HelpLine`(const char`*`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* HelpLine]([@(0.0.255) c
onst]_[@(0.0.255) char]_`*[*@3 txt])&]
[s2;b17;a17; Sets help topic link for Ctrl.&]
[s7;i1120;a17; [%-*C@3 txt]-|Link.&]
[s7;i1120;a17; [*/ Return value]-|`*this for method chaining.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetTip`(`)const:%- [_^`:`:String^ String]_[* GetTip]()_[@(0.0.255) const]&]
[s7;i1120;a17; [*/ Return value]-|Current Tip text.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetHelpLine`(`)const:%- [_^`:`:String^ String]_[* GetHelpLine]()_[@(0.0.255) c
onst]&]
[s7;i1120;a17; [*/ Return value]-|Current HelpTopic link.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:operator`<`<`(Ctrl`&`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* operator<<]([_^`:`:Ctrl^ C
trl][@(0.0.255) `&]_[*@3 ctrl])&]
[s5;:Ctrl`:`:Add`(Ctrl`&`):%- [@(0.0.255) void]_[* Add]([_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[*@3 c
trl])&]
[s2;b17;a17; Adds ctrl as the last child.&]
[s7;i1120;a17; [%-*C@3 ctrl]-|Ctrl to add.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:Remove`(`):%- [@(0.0.255) void]_[* Remove]()&]
[s2;b17;a17; Removes Ctrl from its parent.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:operator`<`<`=`(const Value`&`):%- [@(0.0.255) const]_[_^`:`:Value^ Value][@(0.0.255) `&
]_[* operator<<`=]([@(0.0.255) const]_[_^`:`:Value^ Value][@(0.0.255) `&]_[*@3 v])&]
[s2;b17;a17; Same as SetData(v).&]
[s7;i1120;a17; [%-*C@3 v]-|New Value of Ctrl.&]
[s7;i1120;a17; [*/ Return value]-|Reference to v.&]
[s3; &]
[s4;%- &]
[s5;:Upp`:`:Ctrl`:`:operator`<`<`(Upp`:`:Function`<void`(`)`>`):%- [_^Upp`:`:Callback^ C
allback][@(0.0.255) `&]_[* operator<<]([_^Upp`:`:Function^ Upp`::Function]<[@(0.0.255) voi
d]_()>_[*@3 action])&]
[s2; Same as WhenAction << action, can be used both with lambdas 
and Events (former Callbacks)..&]
[s3; &]
[s4;%- &]
[s5;:Upp`:`:Ctrl`:`:SetTimeCallback`(int`,Function`,int`):%- [@(0.0.255) void]_[* SetTime
Callback]([@(0.0.255) int]_[*@3 delay`_ms], [_^Upp`:`:Function^ Function]<[@(0.0.255) voi
d]_()>_[*@3 cb], [@(0.0.255) int]_[*@3 id]_`=_[@3 0])&]
[s2;b17;a17; Puts delayed callback to the timer queue. As an identifier 
of callback, which is void `* in timer queue, [* this] `+ [* id] 
is used. When Ctrl is destroyed, all callbacks with [* id] in range 
0 ... sizeof(Ctrl) are removed from timer callback queue `- this 
ensures that no dangling callbacks are left there.&]
[s2; [%-*@3 delay`_ms][%-  is d]elay of callback in ms. If this is 0, 
callback is called immediately after all pending input GUI events 
are processed. Negative value means the event is periodic `- 
it is triggered after `-delay`_ms and after being performed, 
it is rescheduled with the same delay`_ms.&]
[s2; [%- Identifier ][%-*@3 id] should be in range 0..80. U`+`+ defines 
compile`-time protocol for distributing these ids. If Ctrl wants 
to use non`-zero time callback id, it should define it using&]
[s2; &]
[s2; -|enum `{ TIMEID`_PERIODIC `= [/ baseclass]`::TIMEID`_COUNT, TIMEID`_COUNT[@(0.0.255)  
`};]&]
[s2; &]
[s2; -|Using zero as [* id] is OK as long as you do not intend to remove 
time callbacks using [* KillTimeCallback. ]Alternative to using 
id is class TimeCallback that represents whole issue as member 
variable of Ctrl.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:KillTimeCallback`(int`):%- [@(0.0.255) void]_[* KillTimeCallback]([@(0.0.255) i
nt]_[*@3 id]_`=_[@3 0])&]
[s2;b17;a17; Removes time callback associated with Ctrl.&]
[s7;i1120;a17; [%-*C@3 id]-|Id of callback.&]
[s3;%- &]
[s4;%- &]
[s5;:Upp`:`:Ctrl`:`:KillSetTimeCallback`(int`,Function`,int`):%- [@(0.0.255) void]_[* Kil
lSetTimeCallback]([@(0.0.255) int]_[*@3 delay`_ms], [_^Upp`:`:Function^ Function]<[@(0.0.255) v
oid]_()>_[*@3 cb], [@(0.0.255) int]_[*@3 id])&]
[s2; Removes callback with [%-*@3 id] and sets it again.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:ExistsTimeCallback`(int`)const:%- [@(0.0.255) bool]_[* ExistsTimeCallback]([@(0.0.255) i
nt]_[*@3 id]_`=_[@3 0])_[@(0.0.255) const]&]
[s2;b17;a17; Tests whether Ctrl has associated callback in timer 
queue.&]
[s7;i1120;a17; [%-*C@3 id]-|Id of callback.&]
[s7;i1120;a17; [*/ Return value]-|true when id is found in timer queue.&]
[s3;%- &]
[s4;%- &]
[s5;:Upp`:`:Ctrl`:`:PostCallback`(Function`,int`):%- [@(0.0.255) void]_[* PostCallback]([_^Upp`:`:Function^ F
unction]<[@(0.0.255) void]_()>_[*@3 cb], [@(0.0.255) int]_[*@3 id]_`=_[@3 0])&]
[s2; Posts callback to be executed immediately (but in the main loop 
after all current GUI events).&]
[s3; &]
[s4;%- &]
[s5;:Upp`:`:Ctrl`:`:KillPostCallback`(Function`,int`):%- [@(0.0.255) void]_[* KillPostCal
lback]([_^Upp`:`:Function^ Function]<[@(0.0.255) void]_()>_[*@3 cb], 
[@(0.0.255) int]_[*@3 id])&]
[s2; Similar to PostCallback, but removes callback(s) with the same 
id from the queue first.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:GetActiveCtrl`(`):%- [@(0.0.255) static] [_^`:`:Ctrl^ Ctrl]_`*[* GetActiveCtrl
]()&]
[s2;b17;a17; Returns pointer to active Ctrl. Active Ctrl is top`-level 
Ctrl of Ctrl with keyboard focus.&]
[s7;i1120;a17; [*/ Return value]-|Pointer to active Ctrl.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetActiveWindow`(`):%- [@(0.0.255) static] [_^`:`:Ctrl^ Ctrl]_`*[* GetActiveWi
ndow]()&]
[s2;b17;a17; Returns pointer to active TopWindow that is either active 
or owns active Ctrl. Difference between GetActiveWindow and GetActiveCtrl 
is that GetActiveCtrl can return pop`-up Ctrl, while GetActiveWindow 
returns always TopWindow `- if active Ctrl is pop`-up, owner 
of pop`-up is returned.&]
[s7;i1120;a17; [*/ Return value]-|Pointer to active window.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetVisibleChild`(Ctrl`*`,Point`,bool`):%- [@(0.0.255) static] 
[_^`:`:Ctrl^ Ctrl]_`*[* GetVisibleChild]([_^`:`:Ctrl^ Ctrl]_`*[*@3 ctrl], 
[_^`:`:Point^ Point]_[*@3 p], [@(0.0.255) bool]_[*@3 pointinframe])&]
[s2;b17;a17; Finds deepest descendant of Ctrl that is visible and 
contains given point. If not such Ctrl exists, returns this.&]
[s7;i1120;a17; [%-*C@3 ctrl]-|Parent ctrl.&]
[s7;i1120;a17; [%-*C@3 p]-|Point.&]
[s7;i1120;a17; [%-*C@3 pointinframe]-|Determines whether point is in 
view or frame coordinates.&]
[s7;i1120;a17; [*/ Return value]-|Pointer to Ctrl.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:PopUpHWND`(HWND`,bool`,bool`,bool`,bool`):%- [@(0.0.255) void]_[* PopUpHWND](
HWND_[*@3 hwnd], [@(0.0.255) bool]_[*@3 savebits]_`=_[@(0.0.255) true], 
[@(0.0.255) bool]_[*@3 activate]_`=_[@(0.0.255) true], [@(0.0.255) bool]_[*@3 dropshadow]_`=
_[@(0.0.255) false], [@(0.0.255) bool]_[*@3 topmost]_`=_[@(0.0.255) false])&]
[s2;b17;a17; Opens top`-level Ctrl as pop`-up window. [*/ This method 
can only be invoked in the main thread.]&]
[s6; [2 Win32 specific.]&]
[s7;i1120;a17; [%-*C@3 hwnd]-|Win32 handle of owner window.&]
[s7;i1120;a17; [%-*C@3 savebits]-|Indicates that system should try to 
preserve background bits.&]
[s7;i1120;a17; [%-*C@3 activate]-|Pop`-up should be activated.&]
[s7;i1120;a17; [%-*C@3 dropshadow]-|Pop`-up should have drop`-shadow 
(if supported).&]
[s7;i1120;a17; [%-*C@3 topmost]-|Pop`-up should be top`-most window.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:PopUp`(Ctrl`*`,bool`,bool`,bool`,bool`):%- [@(0.0.255) void]_[* PopUp]([_^`:`:Ctrl^ C
trl]_`*[*@3 owner]_`=_NULL, [@(0.0.255) bool]_[*@3 savebits]_`=_[@(0.0.255) true], 
[@(0.0.255) bool]_[*@3 activate]_`=_[@(0.0.255) true], [@(0.0.255) bool]_[*@3 dropshadow]_`=
_[@(0.0.255) false], [@(0.0.255) bool]_[*@3 topmost]_`=_[@(0.0.255) false])&]
[s2;b17;a17; Opens top`-level Ctrl as pop`-up window. [*/ This method 
can only be invoked in the main thread.]&]
[s7;i1120;a17; [%-*C@3 owner]-|Owner.&]
[s7;i1120;a17; [%-*C@3 savebits]-|Indicates that system should try to 
preserve background bits.&]
[s7;i1120;a17; [%-*C@3 activate]-|Pop`-up should be activated.&]
[s7;i1120;a17; [%-*C@3 dropshadow]-|Pop`-up should have drop`-shadow 
(if supported).&]
[s7;i1120;a17; [%-*C@3 topmost]-|Pop`-up should be top`-most window.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:SetAlpha`(`:`:byte`):%- [@(0.0.255) void]_[* SetAlpha]([_^`:`:byte^ byte]_[*@3 a
lpha])&]
[s2;b17;a17; Sets top`-level Ctrl alpha blending if supported by 
system. Ctrl must be open.&]
[s7;i1120;a17; [%-*C@3 alpha]-|Value of alpha.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:IsWaitingEvent`(`):%- [@(0.0.255) static] [@(0.0.255) bool]_[* IsWaitingEvent](
)&]
[s7;i1120;a17; [*/ Return value]-|True when there is waiting unprocessed 
event in input queue.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:ProcessEvents`(bool`*`):%- [@(0.0.255) static] [@(0.0.255) bool]_[* ProcessEve
nts]([@(0.0.255) bool]_`*[*@3 quit]_`=_NULL)&]
[s2;b17;a17; Processes all events from input queue. When there is 
no pending event, returns immediately. (Processing event involves 
usually involves dispatching it via virtual methods to proper 
Ctrls). Additionally, after all input events are processed, all 
pending timer events are processed and all Refreshed areas of 
windows are repainted.&]
[s7;i1120;a17; [%-*C@3 quit]-|Assigned true when WM`_QUIT message is 
intercepted (Win32 specific).&]
[s7;i1120;a17; [*/ Return value]-|True indicates that one or more events 
were processed, false that queue was empty.&]
[s3;%- &]
[s4;%- &]
[s5;:Upp`:`:Ctrl`:`:GetEventLevel`(`):%- [@(0.0.255) static] [@(0.0.255) int]_[* GetEventLe
vel]()&]
[s2; Returns the level of input event. This is basically a reentrancy 
level of ProcessEvent(s) routine `- it starts zero but increments 
each time the input event is generated by ProcessEvent(s). This 
information can be useful for background threads or in timer 
events (where this is zero when application is in the `"base`" 
state).&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:IsPopUp`(`)const:%- [@(0.0.255) bool]_[* IsPopUp]()_[@(0.0.255) const]&]
[s7;i1120;a17; [*/ Return value]-|True if Ctrl is pop`-up window.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:EventLoop`(Ctrl`*`):%- [@(0.0.255) static] [@(0.0.255) void]_[* EventLoop]([_^`:`:Ctrl^ C
trl]_`*[*@3 loopctrl]_`=_NULL)&]
[s2;b17;a17; Executes event`-loop. If [*@3 loopctrl ]is not NULL, it 
must be opened top`-level Ctrl and loop is executed until EndLoop 
method for [*@3 loopctrl ]is invoked. If [*@3 loopctrl] is NULL, 
loop is executed as long as any top`-level Ctrl exists or application 
is terminated by OS specific `"shutdown`" event. [*/ This method 
can only be invoked in the main thread.]&]
[s7;i1120;a17; [%-*C@3 loopctrl]-|Looping Ctrl.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetLoopLevel`(`):%- [@(0.0.255) static] [@(0.0.255) int]_[* GetLoopLevel]()&]
[s7;i1120;a17; [*/ Return value]-|Level of even`-loop (even`-loops a 
reentrant).&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetLoopCtrl`(`):%- [@(0.0.255) static] [_^`:`:Ctrl^ Ctrl]_`*[* GetLoopCtrl]()&]
[s7;i1120;a17; [*/ Return value]-|Current looping Ctrl.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:EndLoop`(`):%- [@(0.0.255) void]_[* EndLoop]()&]
[s2;b17;a17; Terminates loop for looping Ctrl. Note that this terminates 
only loop for looping Ctrl. If there is another loop above such 
loop, nothing is terminated until this additional loop is active.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:EndLoop`(int`):%- [@(0.0.255) void]_[* EndLoop]([@(0.0.255) int]_[*@3 code])&]
[s2; Same as EndLoop(), but also defines loop exit code.&]
[s7;i1120;a17; [%-*C@3 code]-|Loop exit code.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:InLoop`(`)const:%- [@(0.0.255) bool]_[* InLoop]()_[@(0.0.255) const]&]
[s7;i1120;a17; [*/ Return value]-|true if Ctrl is looping Ctrl.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetExitCode`(`)const:%- [@(0.0.255) int]_[* GetExitCode]()_[@(0.0.255) const]&]
[s7;i1120;a17; [*/ Return value]-|Exit code of last loop performed with 
this Ctrl.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:Clipboard`(`):%- [@(0.0.255) static] [_^PasteClip^ PasteClip][@(0.0.255) `&]_[* C
lipboard]()&]
[s2; Represents the clipboard as PasteClip. This allows unification 
of drag`&drop and clipboard operations as there can be single 
method handling with Clipboard and Drag`&Drop (and X11 selection) 
operations.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:Selection`(`):%- [@(0.0.255) static] [_^PasteClip^ PasteClip][@(0.0.255) `&]_[* S
election]()&]
[s2; Represents X11 selection as PasteClip. This allows unification 
of drag`&drop and selection operations as there can be single 
method handling with Clipboard and Drag`&Drop (and X11 selection) 
operations.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:SetSelectionSource`(const char`*`):%- [@(0.0.255) void]_[* SetSelectionSourc
e]([@(0.0.255) const]_[@(0.0.255) char]_`*[*@3 fmts])&]
[s2; Tells X11 system that this Ctrl is current selection source, 
with [%-*@3 fmts] available (semicolon separated list).&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:DoDragAndDrop`(const char`*`,const Image`&`,dword`,const VectorMap`<String`,ClipData`>`&`):%- [@(0.0.255) i
nt]_[* DoDragAndDrop]([@(0.0.255) const]_[@(0.0.255) char]_`*[*@3 fmts], 
[@(0.0.255) const]_[_^Image^ Image][@(0.0.255) `&]_[*@3 sample], [_^dword^ dword]_[*@3 action
s], [@(0.0.255) const]_[_^VectorMap^ VectorMap]<[_^String^ String], 
[_^ClipData^ ClipData]>`&_[*@3 data])&]
[s2; Performs drag`&drop operation, with this Ctrl as source. [%-*@3 fmts] 
is a semicolon separated list of formats available using GetDropData 
method, [%-*@3 sample] is an image representation of data, [%-*@3 actions] 
are allowed drag and drop operations `- a binary or DND`_NONE, 
DND`_COPY, DND`_MOVE (or DND`_ALL as combination of all of them). 
Special unrelated flag DND`_EXACTIMAGE can be add to actions 
to indicate that Drag`&Drop should not alter [%-*@3 sample] image 
(otherwise it can be adjusted to look consistent). [%-*@3 data] 
is data directly provided for the operation as map of individual 
formats to ClipData.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:DoDragAndDrop`(const char`*`,const Image`&`,dword`):%- [@(0.0.255) int]_[* D
oDragAndDrop]([@(0.0.255) const]_[@(0.0.255) char]_`*[*@3 fmts], [@(0.0.255) const]_[_^Image^ I
mage][@(0.0.255) `&]_[*@3 sample]_`=_Null, [_^dword^ dword]_[*@3 actions]_`=_DND`_ALL)&]
[s2; DoDragAndDrop with empty data (all formats are provided by GetDropData).&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:DoDragAndDrop`(const VectorMap`<String`,ClipData`>`&`,const Image`&`,dword`):%- [@(0.0.255) i
nt]_[* DoDragAndDrop]([@(0.0.255) const]_[_^VectorMap^ VectorMap]<[_^String^ String], 
[_^ClipData^ ClipData]>`&_[*@3 data], [@(0.0.255) const]_[_^Image^ Image][@(0.0.255) `&]_[*@3 s
ample]_`=_Null, [_^dword^ dword]_[*@3 actions]_`=_DND`_ALL)&]
[s2; DoDragAndDrop with empty fmts (all formats are provided by [%-*@3 data]).&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:GetDragAndDropSource`(`):%- [@(0.0.255) static] [_^Ctrl^ Ctrl]_`*[* GetDragAnd
DropSource]()&]
[s2; Returns current source of Drag and Drop, is such source exists 
in this process and it is U`+`+ widget (otherwise returns NULL).&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetDragAndDropTarget`(`):%- [@(0.0.255) static] [_^Ctrl^ Ctrl]_`*[* GetDragAnd
DropTarget]()&]
[s2; Returns current target of Drag and Drop, is such target exists 
in this process and it is U`+`+ widget (otherwise returns NULL).&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:IsDragAndDropSource`(`):%- [@(0.0.255) bool]_[* IsDragAndDropSource]()&]
[s2; Same as this `=`= GetDragAndDropSource().&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:IsDragAndDropTarget`(`):%- [@(0.0.255) bool]_[* IsDragAndDropTarget]()&]
[s2; Same as this `=`= GetDragAndDropTarget().&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:StdSampleSize`(`):%- [@(0.0.255) static] [_^Size^ Size]_[* StdSampleSize]()&]
[s2; Returns the best size of DoDragAndDrop sample parameter.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:SetMinSize`(Size`):%- [@(0.0.255) void]_[* SetMinSize]([_^`:`:Size^ Size]_[*@3 s
z])&]
[s2;b17;a17; This method does nothing. It is a interface placeholder 
to get Layout templates working `- in derived classes this can 
be statically overloaded to receive minimal size of layout.&]
[s7;i1120;a17; [%-*C@3 sz]-|Minimal size of layout.&]
[s3;%- &]
[s4;%- &]
[s5;:Upp`:`:Ctrl`:`:Skin`(`):%- [@(0.0.255) void] [* Skin]()&]
[s2; Called when the application skin (e.g. widget appearance, system 
colors or dark / light theme switch) changes. It is called in 
children first order. Application should use this to adjust colors, 
which might actually include resetting some widgets and data 
content.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:Csizeinit`(`):%- [@(0.0.255) static] [@(0.0.255) void]_[* Csizeinit]()&]
[s2;b17;a17; Sets zoom factor used to scale layouts (to scale zoomed 
positioning methods like LeftPosZ). Horizontal distances are 
scaled by sz.cx / bsz.cx, vertical by sz.cy / bsz.cy. If bsz 
is Size(0, 0), default base size (based on standard Win32 GUI 
font) is used. Note that U`+`+ sets scaling factor automatically 
upon startup based on actual standard GUI font size.&]
[s7;i1120;a17; [%-*C@3 sz]-|Numerator of scaling factor.&]
[s7;i1120;a17; [%-*C@3 bsz]-|Denominator of scaling factor.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:HorzLayoutZoom`(int`):%- [@(0.0.255) static] [@(0.0.255) int]_[* HorzLayoutZoo
m]([@(0.0.255) int]_[*@3 cx])&]
[s2;b17;a17; Performs horizontal scaling by actual scaling factor.&]
[s7;i1120;a17; [%-*C@3 cx]-|Distance to scale.&]
[s7;i1120;a17; [*/ Return value]-|Scaled distance.&]
[s3;%- &]
[s4;%- &]
[s5;:Upp`:`:Ctrl`:`:HorzLayoutZoomf`(double`):%- [@(0.0.255) double]_[* HorzLayoutZoomf](
[@(0.0.255) double]_[*@3 cx])&]
[s2; Similar to HorzLayoutZoom, but with double precision.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:VertLayoutZoom`(int`):%- [@(0.0.255) static] [@(0.0.255) int]_[* VertLayoutZoo
m]([@(0.0.255) int]_[*@3 cy])&]
[s2;b17;a17; Performs vertical scaling by actual scaling factor.&]
[s7;i1120;a17; [%-*C@3 cy]-|Distance to scale.&]
[s7;i1120;a17; [*/ Return value]-|Scaled distance.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:LayoutZoom`(int`,int`):%- [@(0.0.255) static] [_^`:`:Size^ Size]_[* LayoutZoom
]([@(0.0.255) int]_[*@3 cx], [@(0.0.255) int]_[*@3 cy])&]
[s2;b17;a17; Performs scaling by actual scaling factor.&]
[s7;i1120;a17; [%-*C@3 cx]-|Horizontal distance.&]
[s7;i1120;a17; [%-*C@3 cy]-|Vertical distance.&]
[s7;i1120;a17; [*/ Return value]-|Scaled size.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:LayoutZoom`(Size`):%- [@(0.0.255) static] [_^`:`:Size^ Size]_[* LayoutZoom]([_^`:`:Size^ S
ize]_[*@3 sz])&]
[s2;b17;a17; Performs scaling by actual scaling factor.&]
[s7;i1120;a17; [%-*C@3 sz]-|Size to scale.&]
[s7;i1120;a17; [*/ Return value]-|Scaled size.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:NoLayoutZoom`(`):%- [@(0.0.255) static] [@(0.0.255) void]_[* NoLayoutZoom]()&]
[s2;b17;a17; Sets scaling factor to (1, 1). Same as SetZoomSize(Size(1, 
1), Size(1, 1)).&]
[s3;%- &]
[s4;%- &]
[s5;:Upp`:`:Ctrl`:`:SetSkin`(void`(`*`)`(`)`):%- [@(0.0.255) static] 
[@(0.0.255) void] [* SetSkin]([@(0.0.255) void] ([@(0.0.255) `*][*@3 skin])())&]
[s2; Sets the GUI theme. [%-*@3 skin] is routine that sets appearance 
of everything, by altering predefined SColors, changing images 
and changing widget appearance through `::StyleDefault().Write(). 
See CtrlLib/Ch.cpp for example.&]
[s3;%- &]
[s4;%- &]
[s5;:Upp`:`:Ctrl`:`:SkinChangeSensitive`(bool`):%- [@(0.0.255) static] 
[@(0.0.255) void] [* SkinChangeSensitive]([@(0.0.255) bool] [*@3 b] [@(0.0.255) `=] 
[@(0.0.255) true])&]
[s2; If not active (which is default), the appearance of U`+`+ application 
is established once at the start and does not change if user 
switches host platform theme. If active, U`+`+ changes appearance 
when host platform theme changes. Note that activating this feature 
requires additional work and thorough testing to make sure that 
all colors adequately react to changes between light and dark 
modes.&]
[s3; &]
[s4;%- &]
[s5;:Upp`:`:Ctrl`:`:SwapDarkLight`(`):%- [@(0.0.255) static] [@(0.0.255) void] 
[* SwapDarkLight]()&]
[s2; This debugging feature toggles between dark and light mode to 
make skin change sensitive application development easier.&]
[s3;%- &]
[s4;%- &]
[s5;:Upp`:`:Ctrl`:`:SwapDarkLightKey`(dword`):%- [@(0.0.255) static] 
[@(0.0.255) void] [* SwapDarkLightKey](dword [*@3 key])&]
[s2; This sets a special key that when presses calls SwapDarkLight. 
0 means no key. Normally, in debug mode Ctrl`+Num`[`*`] is the 
default key, in release mode default is 0.&]
[s3;%- &]
[s4;%- &]
[s5;:Upp`:`:Ctrl`:`:SetUHDEnabled`(bool`):%- [@(0.0.255) void]_[* SetUHDEnabled]([@(0.0.255) b
ool]_[*@3 set])&]
[s2; Informs host platform that application is UHD ready. Default 
is true. Disabling UHD mode has to be done before GUI`_APP`_MAIN, 
e.g. in INITBLOCK.&]
[s3; &]
[s4;%- &]
[s5;:Upp`:`:Ctrl`:`:IsUHDEnabled`(`):%- [@(0.0.255) bool]_[* IsUHDEnabled]()&]
[s2; Returns the value set by SetUHDEnabled.&]
[s3;%- &]
[s4;%- &]
[s5;:Upp`:`:Ctrl`:`:SetDarkThemeEnabled`(bool`):%- [@(0.0.255) static] 
[@(0.0.255) void]_[* SetDarkThemeEnabled]([@(0.0.255) bool]_[*@3 set]_`=_[@(0.0.255) true])
&]
[s2; Hints coloring and skinning algorithms that the application 
is ready to work in dark theme mode. Currently this enables dark 
theme in Windows (with other platforms dark theme is enabled 
by default). Default value is true. Disabling dark theme has 
to be done before GUI`_APP`_MAIN, e.g. in INITBLOCK.&]
[s3; &]
[s4;%- &]
[s5;:Upp`:`:Ctrl`:`:IsDarkThemeEnabled`(`):%- [@(0.0.255) static] [@(0.0.255) bool]_[* IsDa
rkThemeEnabled]()&]
[s2; Returns the value set by SetDarkThemeEnabled.&]
[s3;%- &]
[s4; &]
[s5;K:Ctrl`:`:GetWorkArea`(`):%- [*^`:`:Rect^@(64) Rect][*@(64) _][* GetWorkArea][*@(64) ()]&]
[s2; Returns OS specific working area for the widget `- this is rectangle 
in screen coordinates where application top`-level windows can 
be placed `- the size of screen minus the size of any border 
entities like the task`-bar. If widget is not associated with 
the open window, returns the size of primary work area.&]
[s7;i1120;a17; [*/ Return value]-|Work area rectangle.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetVirtualWorkArea`(`):%- [@(0.0.255) static] [_^`:`:Rect^ Rect]_[* GetVirtual
WorkArea]()&]
[s2;b17;a17; Returns the total size of all displays minus any border 
entities.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetVirtualScreenArea`(`):%- [@(0.0.255) static] [_^`:`:Rect^ Rect]_[* GetVirtu
alScreenArea]()&]
[s2;b17;a17; Returns the total size of all displays.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetPrimaryWorkArea`(`):%- [@(0.0.255) static] [_^`:`:Rect^ Rect]_[* GetPrimary
WorkArea]()&]
[s2;b17;a17; Returns the size of primary work area `- primary screen 
in Windows is the display with start menu.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetPrimaryScreenArea`(`):%- [@(0.0.255) static] [_^`:`:Rect^ Rect]_[* GetPrima
ryScreenArea]()&]
[s2;b17;a17; Returns the size of primary screen `- primary screen 
in Windows is the display with start menu.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetWorkArea`(Point`):%- [@(0.0.255) static] [_^Rect^ Rect]_[* GetWorkArea]([_^Point^ P
oint]_[*@3 pt])&]
[s2; Returns the recangle of work area which contains [%-*@3 pt]. If 
[%-*@3 pt] does not belong to any area, returns the primary work 
area.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:GetMouseWorkArea`(`):%- [@(0.0.255) static] [_^Rect^ Rect]_[* GetMouseWorkArea
]()&]
[s2; Returns the work are which contains mouse cursor. Same as GetWorkArea(GetMousePo
s()).&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetKbdDelay`(`):%- [@(0.0.255) static] [@(0.0.255) int]_[* GetKbdDelay]()&]
[s2;b17;a17; Returns delay of keyboard before autorepeat starts when 
key is pressed.&]
[s7;i1120;a17; [*/ Return value]-|Time in ms.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetKbdSpeed`(`):%- [@(0.0.255) static] [@(0.0.255) int]_[* GetKbdSpeed]()&]
[s2;b17;a17; Returns speed of autorepeat.&]
[s7;i1120;a17; [*/ Return value]-|Speed of autorepeat.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetDefaultWindowRect`(`):%- [@(0.0.255) static] [_^`:`:Rect^ Rect]_[* GetDefau
ltWindowRect]()&]
[s2;b17;a17; Returns OS suggested rectangle of newly open window.&]
[s7;i1120;a17; [*/ Return value]-|Default window rectangle.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetAppName`(`):%- [@(0.0.255) static] [_^`:`:String^ String]_[* GetAppName]()&]
[s7;i1120;a17; [*/ Return value]-|Name of application. Used by U`+`+ 
in several places like Prompts.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:SetAppName`(const String`&`):%- [@(0.0.255) static] [@(0.0.255) void]_[* SetAp
pName]([@(0.0.255) const]_[_^`:`:String^ String][@(0.0.255) `&]_[*@3 appname])&]
[s7;i1120;a17; [%-*C@3 appname]-|Adjusts application name.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:Name`(`)const:%- [_^`:`:String^ String]_[* Name]()_[@(0.0.255) const]&]
[s2;b17;a17; Dumps diagnostic informations to standard log.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:Dump`(Stream`&`)const:%- [@(0.0.255) virtual] [@(0.0.255) void]_[* Dump]([_^`:`:Stream^ S
tream][@(0.0.255) `&]_[*@3 s])_[@(0.0.255) const]&]
[s2;b17;a17;%- Dumps diagnostic informations to specified output 
stream.&]
[s7;i1120;a17; [%-*C@3 s]-|Stream.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GuiSleep`(int`):%- [@(0.0.255) static] [@(0.0.255) void]_[* GuiSleep]([@(0.0.255) i
nt]_[*@3 ms])&]
[s2;b17;a17; Sleeps (while allowing other applications or threads 
to run) for at least [*@3 ms] milliseconds or until new input event 
is available. [*/ This method can only be invoked in the main thread.]&]
[s7;i1120;a17; [%-*@3 ms]-|Time to sleep.&]
[s3; &]
[s4;%- &]
[s5;:Upp`:`:Ctrl`:`:Call`(Upp`:`:Function`<void`(`)`>`):%- [@(0.0.255) static] 
[@(0.0.255) void]_[* Call]([_^Upp`:`:Function^ Function]<[@(0.0.255) void]_()>_[*@3 cb])&]
[s2; Executes a callback in the main thread (the one responsible 
for GUI). It works by posting callback into timer queue (with 
zero delay), then waits its completion using Semaphore. Main 
GUI thread has to run timer queue management for callback to 
be executed (by running event`-loop (TopWindow`::Run) or ProcessEvents). 
Warning: Call temporarily unlocks GuiLock (if locked) so that 
the main thread can run on GUI, this is possible source of race`-conditions 
(GuiLock is relocked after call completes). Be prepared that 
some other code can run on GUI between call to Call and cb being 
executed!&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:IsShutdownThreads`(`):%- [@(0.0.255) static] [@(0.0.255) bool]_[* IsShutdownTh
reads]()&]
[s2; Same as Thread`::IsShutdownThreads. Used to signal non`-main 
threads that the program is about to end, so that non`-main threads 
should terminate.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:ShutdownThreads`(`):%- [@(0.0.255) static] [@(0.0.255) void]_[* ShutdownThread
s]()&]
[s2; Similiar to Thread`::ShutdownThreads, but as part of waiting 
for threads to finish calls ProcessEvents so that any Call methods 
can finish and also periodically unlocks GuiLock so that threads 
waiting on it can finish.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:GetEventId`(`):%- [@(0.0.255) static] [_^int64^ int64]_[* GetEventId]()&]
[s2; This function is guaranteed to return the same number while 
single input event (mouse event or keyboard event) is processed. 
This is helpful in certain caching situations `- e.g. if you 
want to lazy fetch some data, but only once per input event.&]
[s3;%- &]
[s4;%- &]
[s5;:Upp`:`:Ctrl`:`:begin`(`)const:%- [_^Upp`:`:Ctrl`:`:CtrlConstIterator^ CtrlConstIte
rator]_[* begin]()_[@(0.0.255) const]&]
[s5;:Upp`:`:Ctrl`:`:begin`(`):%- [_^Upp`:`:Ctrl`:`:CtrlIterator^ CtrlIterator]_[* begin](
)&]
[s5;:Upp`:`:Ctrl`:`:end`(`)const:%- [_^Upp`:`:Ctrl`:`:CtrlConstIterator^ CtrlConstItera
tor]_[* end]()_[@(0.0.255) const]&]
[s5;:Upp`:`:Ctrl`:`:end`(`):%- [_^Upp`:`:Ctrl`:`:CtrlIterator^ CtrlIterator]_[* end]()&]
[s2; Adds rudimentary iterators over child widgets. Allows range`-based 
for loops: for(Ctrl`& q : widget).&]
[s0;%- &]
[s0;%- &]
[ {{10000@(113.42.0) [s0; [*@7;4 Ctrl`::Logc]]}}&]
[s3; &]
[s1;:Ctrl`:`:Logc`:`:class:%- [@(0.0.255)3 class][3 _][*3 Logc]&]
[s9; This nested class serves as either vertical or horizontal part 
of logical position.&]
[s3; &]
[s0;%- &]
[ {{10000F(128)G(128)@1 [s0; [* Constructor Detail]]}}&]
[s3;%- &]
[s5;:Ctrl`:`:Logc`:`:Logc`(int`,int`,int`):%- [* Logc]([@(0.0.255) int]_[*@3 al], 
[@(0.0.255) int]_[*@3 a], [@(0.0.255) int]_[*@3 b])&]
[s7;l352;i1120;a17; [%-*C@3 al]-|Alignment type. Determines what other 
parameters mean. &]
[s7;l352;i1120;a17; [%-*C@3 a]-|First value.&]
[s7;l352;i1120;a17; [%-*C@3 b]-|Second value.&]
[s3;%- &]
[s4;%- &]
[s5;:Ctrl`:`:Logc`:`:Logc`(`):%- [* Logc]()&]
[s2; Default constructor. Sets Logc to the empty state.&]
[s3; &]
[s0;%- &]
[ {{10000F(128)G(128)@1 [s0; [* Public Member List]]}}&]
[s3;%- &]
[s5;:Ctrl`:`:Logc`:`:LSGN`(dword`):%- [@(0.0.255) static] [@(0.0.255) int]_[* LSGN]([_^dword^ d
word]_[*@3 d])&]
[s7;l352;i1120;a17; [%-*C@3 q]-|Logc to compare with.&]
[s7;l352;i1120;a17; [*/ Return value]-|True when equal.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:Logc`:`:operator`!`=`(Ctrl`:`:Logc`)const:%- [@(0.0.255) bool]_[* operator!`=
]([_^Ctrl`:`:Logc^ Logc]_[*@3 q])_[@(0.0.255) const]&]
[s7;l352;i1120;a17; [%-*C@3 q]-|Logc to compare with.&]
[s7;l352;i1120;a17; [*/ Return value]-|True when not equal.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:Logc`:`:GetAlign`(`)const:%- [@(0.0.255) int]_[* GetAlign]()_[@(0.0.255) const
]&]
[s7;l352;i1120;a17; [*/ Return value]-|Alignment type.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:Logc`:`:GetA`(`)const:%- [@(0.0.255) int]_[* GetA]()_[@(0.0.255) const]&]
[s7;l352;i1120;a17; [*/ Return value]-|First value.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:Logc`:`:GetB`(`)const:%- [@(0.0.255) int]_[* GetB]()_[@(0.0.255) const]&]
[s7;l352;i1120;a17; [*/ Return value]-|Second value.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:Logc`:`:SetAlign`(int`):%- [@(0.0.255) void]_[* SetAlign]([@(0.0.255) int]_[*@3 a
lign])&]
[s2;l352;b17;a17;%- Sets alignment type.&]
[s7;l352;i1120;a17; [%-*C@3 align]-|Alignment type.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:Logc`:`:SetA`(int`):%- [@(0.0.255) void]_[* SetA]([@(0.0.255) int]_[*@3 a])&]
[s2;l352;b17;a17; Sets first value.&]
[s7;l352;i1120;a17; [%-*C@3 a]-|Value.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:Logc`:`:SetB`(int`):%- [@(0.0.255) void]_[* SetB]([@(0.0.255) int]_[*@3 b])&]
[s2;l352;b17;a17; Sets second value.&]
[s7;l352;i1120;a17; [%-*C@3 b]-|Value.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:Logc`:`:IsEmpty`(`)const:%- [@(0.0.255) bool]_[* IsEmpty]()_[@(0.0.255) const]&]
[s7;l352;i1120;a17; [*/ Return value]-|True if Logc is empty.&]
[s3; &]
[s0; &]
[s0; &]
[s0;%- &]
[ {{10000@(113.42.0) [s0; [*@7;4 Ctrl`::LogPos]]}}&]
[s3; &]
[s5;:`:`:Ctrl`:`:LogPos`:`:struct:%- [*@(0.0.255) struct][*@(64) _][* LogPos]&]
[s9; This nested class combines two Logc value into complete logical 
position.&]
[s3; &]
[s0;%- &]
[ {{10000F(128)G(128)@1 [s0; [* Constructor Detail]]}}&]
[s3;%- &]
[s5;:Ctrl`:`:LogPos`:`:LogPos`(Ctrl`:`:Logc`,Ctrl`:`:Logc`):%- [* LogPos]([_^Ctrl`:`:Logc^ L
ogc]_[*@3 x], [_^Ctrl`:`:Logc^ Logc]_[*@3 y])&]
[s7;l352;i1120;a17; [%-*C@3 x]-|Horizontal Logc.&]
[s7;l352;i1120;a17; [%-*C@3 y]-|Vertical Logc.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:LogPos`:`:LogPos`(`):%- [* LogPos]()&]
[s2; Default constructor. Sets both Logc empty.&]
[s3; &]
[s0;%- &]
[ {{10000F(128)G(128)@1 [s0; [* Public Member List]]}}&]
[s3;%- &]
[s5;:Ctrl`:`:LogPos`:`:operator`=`=`(Ctrl`:`:LogPos`)const:%- [@(0.0.255) bool]_[* operat
or`=`=]([_^Ctrl`:`:LogPos^ LogPos]_[*@3 b])_[@(0.0.255) const]&]
[s7;l352;i1120;a17; [%-*C@3 b]-|LogPos to compare with.&]
[s7;l352;i1120;a17; [*/ Return value]-|True when equal.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:LogPos`:`:operator`!`=`(Ctrl`:`:LogPos`)const:%- [@(0.0.255) bool]_[* operat
or!`=]([_^Ctrl`:`:LogPos^ LogPos]_[*@3 b])_[@(0.0.255) const]&]
[s7;l352;i1120;a17; [%-*C@3 b]-|LogPos to compare with.&]
[s7;l352;i1120;a17; [*/ Return value]-|True when equal.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:LogPos`:`:x:%- [_^Ctrl`:`:Logc^ Logc]_[* x]&]
[s2; Horizontal Logc.&]
[s3; &]
[s4;%- &]
[s5;:Ctrl`:`:LogPos`:`:y:%- [_^Ctrl`:`:Logc^ Logc]_[* y]&]
[s2; Vertical Logc.&]
[s3; &]
[s0; ]]