1topic "Ctrl"; 2[i448;a25;kKO9;2 $$1,0#37138531426314131252341829483380:class] 3[l288;2 $$2,2#27521748481378242620020725143825:desc] 4[0 $$3,0#96390100711032703541132217272105:end] 5[H6;0 $$4,0#05600065144404261032431302351956:begin] 6[i448;a25;kKO9;2 $$5,0#37138531426314131252341829483370:item] 7[l288;a4;*@5;1 $$6,6#70004532496200323422659154056402:requirement] 8[l288;i1121;b17;O9;~~~.1408;2 $$7,0#10431211400427159095818037425705:param] 9[i448;b42;O9;2 $$8,8#61672508125594000341940100500538:tparam] 10[b42;2 $$9,9#13035079074754324216151401829390:normal] 11[2 $$0,0#00000000000000000000000000000000:Default] 12[{_}%EN-US 13[ {{10000@(113.42.0) [s0; [*@7;4 Ctrl]]}}&] 14[s3;%- &] 15[s1;:Ctrl`:`:class:%- [@(0.0.255)3 class][3 _][*3 Ctrl][3 _:_][@(0.0.255)3 public][3 _][*@3;3 Pte][3 < 16][*3 Ctrl][3 >_]&] 17[s9; (Derivation from Pte<Ctrl> allows Ctrl to be pointed to by Ptr<Ctrl>&] 18[s0; &] 19[s0; This the base class of GUI widgets hierarchy (that is why U`+`+ 20widgets are also named `"Ctrls`").&] 21[s3; &] 22[s0;%- &] 23[ {{10000F(128)G(128)@1 [s0; [* Public Member List]]}}&] 24[s3; &] 25[s0;%- enum_[* PlacementConstants]&] 26[s2;b17;a17; Constants used in logical coordinates.&] 27[s7;i1120;a17;:Ctrl`:`:CENTER: [%-*C@3 CENTER]-|Center alignment.&] 28[s7;i1120;a17;:Ctrl`:`:LEFT: [%-*C@3 LEFT]-|Left alignment.&] 29[s7;i1120;a17;:Ctrl`:`:RIGHT: [%-*C@3 RIGHT]-|Right alignment.&] 30[s7;i1120;a17;:Ctrl`:`:TOP: [%-*C@3 TOP]-|Equal to LEFT (better name 31for vertical coordinate).&] 32[s7;i1120;a17;:Ctrl`:`:BOTTOM: [%-*C@3 BOTTOM]-|Equal to RIGHT (better 33name for vertical coordinate)&] 34[s7;i1120;a17;:Ctrl`:`:SIZE: [%-*C@3 SIZE]-|Size alignment.&] 35[s7;i1120;a17;:Ctrl`:`:MINSIZE: [%-*C@3 MINSIZE]-|Value is determined 36using GetMinSize.&] 37[s7;i1120;a17;:Ctrl`:`:MAXSIZE: [%-*C@3 MAXSIZE]-|Value is determined 38using GetMaxSize.&] 39[s7;i1120;a17;:Ctrl`:`:STDSIZE: [%-*C@3 STDSIZE]-|Value is determined 40using Get&] 41[s3; &] 42[s4; &] 43[s0;%- enum_[* StateReason]&] 44[s2;b17;a17; Arguments of State virtual method.&] 45[s7;i1120;a17;:Ctrl`:`:FOCUS: [%-*C@3 FOCUS]-|Ctrl got/lost focus.&] 46[s7;i1120;a17;:Ctrl`:`:ACTIVATE: [%-*C@3 ACTIVATE]-|Ctrl was activated.&] 47[s7;i1120;a17;:Ctrl`:`:DEACTIVATE: [%-*C@3 DEACTIVATE]-|Ctrl was deactivated.&] 48[s7;i1120;a17;:Ctrl`:`:SHOW: [%-*C@3 SHOW]-|Ctrl visibility changed.&] 49[s7;i1120;a17;:Ctrl`:`:ENABLE: [%-*C@3 ENABLE]-|Ctrl was enabled/disable.&] 50[s7;i1120;a17;:Ctrl`:`:EDITABLE: [%-*C@3 EDITABLE]-|Ctrl editable status 51changed.&] 52[s7;i1120;a17;:Ctrl`:`:OPEN: [%-*C@3 OPEN]-|Ctrl was open (its top`-level 53Ctrl was open on screen).&] 54[s7;i1120;a17;:Ctrl`:`:CLOSE: [%-*C@3 CLOSE]-|Ctrl was closed (its top`-level 55Ctrl was closed).&] 56[s3; &] 57[s4; &] 58[s0;%- enum_[* MouseEvents]&] 59[s2;b17;a17; Constants that make up [*/ event] argument of [*/ MouseEvent] 60and [*/ FrameMouseEvent] virtual methods. Value is combination 61of button and action bit fields.&] 62[s2;b17;a17; &] 63[s0;l160; [* Field masks]&] 64[s7;i1120;a17;:Ctrl`:`:BUTTON: [%-*C@3 BUTTON]-|Mask for button field.&] 65[s7;i1120;a17;:Ctrl`:`:ACTION: [%-*C@3 ACTION]-|Mask for action field. 66&] 67[s0; &] 68[s0;l160; [* Actions]&] 69[s7;i1120;a17;:Ctrl`:`:MOUSEENTER: [%-*C@3 MOUSEENTER]-|Mouse entered 70Ctrl.&] 71[s7;i1120;a17;:Ctrl`:`:MOUSEMOVE: [%-*C@3 MOUSEMOVE]-|Mouse moved over 72Ctrl.&] 73[s7;i1120;a17;:Ctrl`:`:MOUSELEAVE: [%-*C@3 MOUSELEAVE]-|Mouse left Ctrl.&] 74[s7;i1120;a17;:Ctrl`:`:CURSORIMAGE: [%-*C@3 CURSORIMAGE]-|Cursor image 75has to be determined (method should respond with image).&] 76[s7;i1120;a17;:Ctrl`:`:MOUSEWHEEL: [%-*C@3 MOUSEWHEEL]-|Mouse wheel 77rotated.&] 78[s7;i1120;a17;:Ctrl`:`:DOWN: [%-*C@3 DOWN]-|Mouse button was pressed.&] 79[s7;i1120;a17;:Ctrl`:`:UP: [%-*C@3 UP]-|Mouse button was released.&] 80[s7;i1120;a17;:Ctrl`:`:DOUBLE: [%-*C@3 DOUBLE]-|Mouse button was double`-clicked.&] 81[s7;i1120;a17;:Ctrl`:`:REPEAT: [%-*C@3 REPEAT]-|When mouse button is 82pressed for a while, U`+`+ imitates keyboard autorepeat sending 83this message.&] 84[s0;l160; [* Buttons] &] 85[s7;i1120;a17; [%-*C@3 LEFT]-|Left button. (This constant is not defined 86in MouseEvents, instead LEFT from Placements Constants is used).&] 87[s7;i1120;a17; [%-*C@3 RIGHT]-|Left button. (This constant is not defined 88in MouseEvents, instead LEFT from Placements Constants is used).&] 89[s0;l160; [* Combinations]&] 90[s7;i1120;a17;:Ctrl`:`:LEFTDOWN: [%-*C@3 LEFTDOWN]-|Left button pressed.&] 91[s7;i1120;a17;:Ctrl`:`:LEFTDOUBLE: [%-*C@3 LEFTDOUBLE]-|Left button 92double pressed.&] 93[s7;i1120;a17;:Ctrl`:`:LEFTREPEAT: [%-*C@3 LEFTREPEAT]-|Left button 94autorepeat.&] 95[s7;i1120;a17;:Ctrl`:`:LEFTUP: [%-*C@3 LEFTUP]-|Left button released.&] 96[s7;i1120;a17;:Ctrl`:`:RIGHTDOWN: [%-*C@3 RIGHTDOWN]-|Right button pressed.&] 97[s7;i1120;a17;:Ctrl`:`:RIGHTDOUBLE: [%-*C@3 RIGHTDOUBLE]-|Right button 98double pressed.&] 99[s7;i1120;a17;:Ctrl`:`:RIGHTREPEAT: [%-*C@3 RIGHTREPEAT]-|Right button 100autorepeat.&] 101[s7;i1120;a17;:Ctrl`:`:RIGHTUP: [%-*C@3 RIGHTUP]-|Right button released.&] 102[s3; &] 103[s4; &] 104[s0;%- enum_`{_[*@3 NOBACKPAINT], [*@3 FULLBACKPAINT], [*@3 TRANSPARENTBACKPAINT], 105[*@3 EXCLUDEPAINT]_`}&] 106[s2;b17;a17; These constants are parameters of BackPaint method. 107They determine back`-plane drawing style.&] 108[s7;i1120;a17;:Ctrl`:`:NOBACKPAINT: [%-*C@3 NOBACKPAINT]-|No backpaint 109is used.&] 110[s7;i1120;a17;:Ctrl`:`:FULLBACKPAINT: [%-*C@3 FULLBACKPAINT]-|Whole 111area of Ctrl is backpainted.&] 112[s7;i1120;a17;:Ctrl`:`:TRANSPARENTBACKPAINT: [%-*C@3 TRANSPARENTBACKPAINT]-|Only 113transparent child Ctrls are backpainted.&] 114[s7;i1120;a17;:Ctrl`:`:EXCLUDEPAINT: [%-*C@3 EXCLUDEPAINT]-|Ctrl is 115not painted. This is special case for specific system related 116situations (like OLE control painted by regular Windows routine).&] 117[s3; &] 118[s4; &] 119[s5;%- [*@(64) typedef_][*@(0.0.255) bool][*@(64) _(`*][* MouseHook][*@(64) )(Ctrl_`*ctrl, 120][*@(0.0.255) bool][*@(64) _inframe, ][*@(0.0.255) int][*@(64) _event, 121Point_p, ][*@(0.0.255) int][*@(64) _zdelta, dword_keyflags)]&] 122[s2;b17;a17; Type for hooking mouse events across all Ctrls.&] 123[s3; &] 124[s4; &] 125[s5;%- [*@(64) typedef_][*@(0.0.255) bool][*@(64) _(`*][* KeyHook][*@(64) )(Ctrl_`*ctrl, 126dword_key, ][*@(0.0.255) int][*@(64) _count)]&] 127[s2;b17;a17; Type for hooking keyboard events across all Ctrls.&] 128[s3; &] 129[s4; &] 130[s5;%- [*@(64) typedef_][*@(0.0.255) bool][*@(64) _(`*][* StateHook][*@(64) )(Ctrl_`*ctrl, 131][*@(0.0.255) int][*@(64) _reason)]&] 132[s2;b17;a17; Type for hooking state changes across all Ctrls.&] 133[s0; &] 134[s4;%- &] 135[s5;:Ctrl`:`:PosLeft`(int`,int`):%- [@(0.0.255) static] [_^Ctrl`:`:Logc^ Logc]_[* PosLeft]( 136[@(0.0.255) int]_[*@3 pos], [@(0.0.255) int]_[*@3 size])&] 137[s2;b17;a17; Creates left (or top) aligned logical coordinate (Logc).&] 138[s7;i1120;a17; [%-*C@3 pos]-|Distance between left margin and left margin 139of parent`'s view.&] 140[s7;i1120;a17; [%-*C@3 size]-|Size.&] 141[s7;i1120;a17; [*/ Return value]-|Logical coordinate.&] 142[s3;%- &] 143[s4;%- &] 144[s5;:Ctrl`:`:PosRight`(int`,int`):%- [@(0.0.255) static] [_^Ctrl`:`:Logc^ Logc]_[* PosRight 145]([@(0.0.255) int]_[*@3 pos], [@(0.0.255) int]_[*@3 size])&] 146[s2;b17;a17; Creates right (or bottom) aligned logical coordinate 147(Logc).&] 148[s7;i1120;a17; [%-*C@3 pos]-|Distance between right margin and right 149margin of parent`'s view.&] 150[s7;i1120;a17; [%-*C@3 size]-|Size.&] 151[s7;i1120;a17; [*/ Return value]-|Logical coordinate.&] 152[s3;%- &] 153[s4;%- &] 154[s5;:Ctrl`:`:PosTop`(int`,int`):%- [@(0.0.255) static] [_^`:`:Ctrl`:`:Logc^ Logc]_[* PosTop 155]([@(0.0.255) int]_[*@3 pos], [@(0.0.255) int]_[*@3 size])&] 156[s2;b17;a17; Equal to PosLeft(pos, size).&] 157[s7;i1120;a17; [%-*C@3 pos]-|Distance between top margin and top margin 158of parent`'s view.&] 159[s7;i1120;a17; [%-*C@3 size]-|Size.&] 160[s7;i1120;a17; [*/ Return value]-|Logical coordinate.&] 161[s3;%- &] 162[s4;%- &] 163[s5;:Ctrl`:`:PosBottom`(int`,int`):%- [@(0.0.255) static] [_^`:`:Ctrl`:`:Logc^ Logc]_[* Pos 164Bottom]([@(0.0.255) int]_[*@3 pos], [@(0.0.255) int]_[*@3 size])&] 165[s2;b17;a17; Equal to PosRight(pos, size).&] 166[s7;i1120;a17; [%-*C@3 pos]-|Distance between bottom margin and bottom 167margin of parent`'s view.&] 168[s7;i1120;a17; [%-*C@3 size]-|Size.&] 169[s7;i1120;a17; [*/ Return value]-|Logical coordinate.&] 170[s3;%- &] 171[s4;%- &] 172[s5;:Ctrl`:`:PosSize`(int`,int`):%- [@(0.0.255) static] [_^`:`:Ctrl`:`:Logc^ Logc]_[* PosSi 173ze]([@(0.0.255) int]_[*@3 lpos], [@(0.0.255) int]_[*@3 rpos])&] 174[s2;b17;a17; Creates logical coordinate where distances between margins 175and parent`'s view margins are fixed and size of Ctrl is variable 176(depends of parent`'s view size).&] 177[s7;i1120;a17; [%-*C@3 lpos]-|Distance between left/top margin and left/top 178margin of parent`'s view.&] 179[s7;i1120;a17; [%-*C@3 rpos]-|Distance between right/bottom margin and 180right/bottom margin of parent`'s view.&] 181[s7;i1120;a17; [*/ Return value]-|Logical coordinate.&] 182[s3;%- &] 183[s4;%- &] 184[s5;:Ctrl`:`:PosCenter`(int`,int`):%- [@(0.0.255) static] [_^`:`:Ctrl`:`:Logc^ Logc]_[* Pos 185Center]([@(0.0.255) int]_[*@3 size], [@(0.0.255) int]_[*@3 offset])&] 186[s2;b17;a17; Creates centered logical coordinate, where Ctrl is placed 187in specified distance from center of parent`'s view. &] 188[s7;i1120;a17; [%-*C@3 size]-|Size.&] 189[s7;i1120;a17; [%-*C@3 offset]-|Offset from center.&] 190[s7;i1120;a17; [*/ Return value]-|Logical coordinate.&] 191[s3;%- &] 192[s4;%- &] 193[s5;:Ctrl`:`:PosCenter`(int`):%- [@(0.0.255) static] [_^`:`:Ctrl`:`:Logc^ Logc]_[* PosCente 194r]([@(0.0.255) int]_[*@3 size])&] 195[s2;b17;a17; Equal to PosCenter(size, 0).&] 196[s7;i1120;a17; [%-*C@3 size]-|Size.&] 197[s7;i1120;a17; [*/ Return value]-|Logical coordinate.&] 198[s3;%- &] 199[s4;%- &] 200[s5;:Ctrl`:`:GetTopCtrls`(`):%- [@(0.0.255) static] [_^`:`:Vector^ Vector][@(0.0.255) <]Ctr 201l_`*>_[* GetTopCtrls]()&] 202[s2;b17;a17; Returns all opened top`-level Ctrls of process. Top`-level 203Ctrls are those without parent (GetParent() `=`= NULL) `- TopWindow 204Ctrls and pop`-up Ctrls.&] 205[s7;i1120;a17; [*/ Return value]-|Vector of all top Ctrls.&] 206[s3;%- &] 207[s4;%- &] 208[s5;:Ctrl`:`:GetTopWindows`(`):%- [@(0.0.255) static] [_^`:`:Vector^ Vector][@(0.0.255) <]C 209trl_`*>_[* GetTopWindows]()&] 210[s2;b17;a17; Returns all opened TopWindows (that is, instances of 211TopWindow class or classes derived from TopWindow) of process. 212The difference between GetTopWindows and GetTopCtrls is that 213GetTopCtrls returns pop`-ups too. &] 214[s7;i1120;a17; [*/ Return value]-|Vector of all TopWindows.&] 215[s3;%- &] 216[s4;%- &] 217[s5;:Ctrl`:`:CloseTopCtrls`(`):%- [@(0.0.255) static] [@(0.0.255) void]_[* CloseTopCtrls]() 218&] 219[s2;b17;a17; Closes all top`-level Ctrls.&] 220[s3;%- &] 221[s4;%- &] 222[s5;:Ctrl`:`:InstallMouseHook`(Ctrl`:`:MouseHook`):%- [@(0.0.255) static] 223[@(0.0.255) void]_[* InstallMouseHook]([_^`:`:Ctrl`:`:MouseHook^ MouseHook]_[*@3 hook])&] 224[s2;b17;a17; Installs mouse hook `- a routine that receives all mouse 225input of application before it gets processed by Ctrls. You can 226install more mouse hooks. Mouse hook routine should return true 227to indicate the end of processing (and event propagation).&] 228[s7;i1120;a17; [%-*C@3 hook]-|Pointer to hook routine.&] 229[s3;%- &] 230[s4;%- &] 231[s5;:Ctrl`:`:DeinstallMouseHook`(Ctrl`:`:MouseHook`):%- [@(0.0.255) static] 232[@(0.0.255) void]_[* DeinstallMouseHook]([_^`:`:Ctrl`:`:MouseHook^ MouseHook]_[*@3 hook]) 233&] 234[s2;b17;a17; Uninstalls previously installed mouse hook.&] 235[s7;i1120;a17; [%-*C@3 hook]-|Pointer to hook routine.&] 236[s3;%- &] 237[s4;%- &] 238[s5;:Ctrl`:`:InstallKeyHook`(Ctrl`:`:KeyHook`):%- [@(0.0.255) static] 239[@(0.0.255) void]_[* InstallKeyHook]([_^`:`:Ctrl`:`:KeyHook^ KeyHook]_[*@3 hook])&] 240[s2;b17;a17; Installs keyboard hook `- a routine that receives all 241keyboard input of application before it gets processed by Ctrls. 242You can install more than one keyboard hooks. Keyboard hook routine 243should return true to indicate the end of processing (and event 244propagation).&] 245[s7;i1120;a17; [%-*C@3 hook]-|Pointer to hook routine.&] 246[s3;%- &] 247[s4;%- &] 248[s5;:Ctrl`:`:DeinstallKeyHook`(Ctrl`:`:KeyHook`):%- [@(0.0.255) static] 249[@(0.0.255) void]_[* DeinstallKeyHook]([_^`:`:Ctrl`:`:KeyHook^ KeyHook]_[*@3 hook])&] 250[s2;b17;a17; Uninstalls previously installed keyboard hook.&] 251[s7;i1120;a17; [%-*C@3 hook]-|Pointer to hook routine.&] 252[s3;%- &] 253[s4;%- &] 254[s5;:Ctrl`:`:InstallStateHook`(Ctrl`:`:StateHook`):%- [@(0.0.255) static] 255[@(0.0.255) void]_[* InstallStateHook]([_^`:`:Ctrl`:`:StateHook^ StateHook]_[*@3 hook])&] 256[s2;b17;a17; Installs state hook `- a routine that receives all state 257changes of any Ctrls.&] 258[s7;i1120;a17; [%-*C@3 hook]-|Pointer to hook routine.&] 259[s3;%- &] 260[s4;%- &] 261[s5;:Ctrl`:`:DeinstallStateHook`(Ctrl`:`:StateHook`):%- [@(0.0.255) static] 262[@(0.0.255) void]_[* DeinstallStateHook]([_^`:`:Ctrl`:`:StateHook^ StateHook]_[*@3 hook]) 263&] 264[s2;b17;a17; Deinstalls previously installed state hook.&] 265[s7;i1120;a17; [%-*C@3 hook]-|Pointer to hook routine.&] 266[s3;%- &] 267[s4;%- &] 268[s5;:Ctrl`:`:Paint`(Draw`&`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* Paint]([_^`:`:Draw^ D 269raw][@(0.0.255) `&]_[*@3 draw])&] 270[s2;b17;a17; This method is called when Ctrl`'s view area is about 271to be repainted.&] 272[s7;i1120;a17; [%-*C@3 draw]-|Target of draw operations.&] 273[s3;%- &] 274[s4;%- &] 275[s5;:Ctrl`:`:CancelMode`(`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* CancelMode]()&] 276[s2;b17;a17; This method is called by U`+`+ core in situations when 277internal state of Ctrl that represents ongoing user action is 278about to be cleared to default. Typical example of such action 279is state of Button that is pushed by mouse click `- if the pushed 280state is internally recorded in Button, it should by cleared 281by this method. Examples of situations when this method is called 282by framework is removing Ctrl from its parent or releasing mouse 283capture.&] 284[s3;%- &] 285[s4;%- &] 286[s5;:Ctrl`:`:Activate`(`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* Activate]()&] 287[s2;b17;a17; This method is called when Ctrl is top`-level and is 288activated `- it or some of its child Ctrls receives keyboard 289focus (activation usually has other signs as bringing window 290foreground or changing its caption).&] 291[s3;%- &] 292[s4;%- &] 293[s5;:Ctrl`:`:Deactivate`(`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* Deactivate]()&] 294[s2;b17;a17; This method is called when Ctrl is top`-level and is 295deactivated `- focus has gone outside of Ctrl and its child Ctrls.&] 296[s3; &] 297[s4;%- &] 298[s5;:Upp`:`:Ctrl`:`:DeactivateBy`(Upp`:`:Ctrl`*`):%- [@(0.0.255) virtual] 299[@(0.0.255) void]_[* DeactivateBy]([_^Upp`:`:Ctrl^ Ctrl]_`*[*@3 new`_focus])&] 300[s2; Similar to Deactivate without parameter, but if a widget that 301caused deactivation by getting a focus is part of the same appliaction, 302[%-*@3 new`_focus] contains a pointer to it. If deactivation is 303caused by switching to another application, this parameter is 304NULL. Both variants of Deactivate are called, the variant with 305paremeter is called first.&] 306[s3;%- &] 307[s4;%- &] 308[s5;:Ctrl`:`:FrameMouseEvent`(int`,Point`,int`,dword`):%- [@(0.0.255) virtual] 309[_^`:`:Image^ Image]_[* FrameMouseEvent]([@(0.0.255) int]_[*@3 event], 310[_^`:`:Point^ Point]_[*@3 p], [@(0.0.255) int]_[*@3 zdelta], [_^`:`:dword^ dword]_[*@3 keyfla 311gs])&] 312[s2;b17;a17; This method is called when mouse event happens in frame 313area of Ctrl not containing any child Ctrls. Default implementation 314does nothing and returns Image`::Arrow().&] 315[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 316ouseEvents] enum.&] 317[s7;i1120;a17; [%-*C@3 p]-|Position of mouse cursor in frame coordinates.&] 318[s7;i1120;a17; [%-*C@3 zdelta]-|Mouse wheel rotation delta (if event 319is MOUSEWHEEL).&] 320[s7;i1120;a17; [%-*C@3 keyflags]-|Combination of key flags for Shift, 321Ctrl and Alt keys.&] 322[s7;i1120;a17; [*/ Return value]-|If event is MOUSEIMAGE, method should 323return Image to be displayed as mouse cursor.&] 324[s3;%- &] 325[s4;%- &] 326[s5;:Ctrl`:`:MouseEvent`(int`,Point`,int`,dword`):%- [@(0.0.255) virtual] 327[_^`:`:Image^ Image]_[* MouseEvent]([@(0.0.255) int]_[*@3 event], [_^`:`:Point^ Point]_[*@3 p 328], [@(0.0.255) int]_[*@3 zdelta], [_^`:`:dword^ dword]_[*@3 keyflags])&] 329[s2;b17;a17; This method is called when mouse event happens in view 330area of Ctrl not containing any child Ctrls. Default implementation 331calls specific mouse event methods based on event parameter.&] 332[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 333ouseEvents] enum.&] 334[s7;i1120;a17; [%-*C@3 p]-|Position of mouse cursor in view coordinates.&] 335[s7;i1120;a17; [%-*C@3 zdelta]-|Mouse wheel rotation delta (if event 336is MOUSEWHEEL).&] 337[s7;i1120;a17; [%-*C@3 keyflags]-|Combination of key flags for Shift, 338Ctrl and Alt keys.&] 339[s7;i1120;a17; [*/ Return value]-|If event is MOUSEIMAGE, method should 340return Image to be displayed as mouse cursor.&] 341[s3;%- &] 342[s4;%- &] 343[s5;:Ctrl`:`:MouseEnter`(Point`,dword`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* MouseE 344nter]([_^`:`:Point^ Point]_[*@3 p], [_^`:`:dword^ dword]_[*@3 keyflags])&] 345[s2;b17;a17; This method is called by default implementation of MouseEvent 346when mouse cursor enters the view area of Ctrl.&] 347[s7;i1120;a17; [%-*C@3 p]-|Point of mouse cursor in view coordinates.&] 348[s7;i1120;a17; [%-*C@3 keyflags]-|Combination of key flags for Shift, 349Ctrl and Alt keys.&] 350[s3;%- &] 351[s4;%- &] 352[s5;:Ctrl`:`:MouseMove`(Point`,dword`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* MouseMo 353ve]([_^`:`:Point^ Point]_[*@3 p], [_^`:`:dword^ dword]_[*@3 keyflags])&] 354[s2;b17;a17; This method is called by default implementation of MouseEvent 355when mouse cursor hovers above view area of Ctrl.&] 356[s7;i1120;a17; [%-*C@3 p]-|Position of mouse cursor in view coordinates.&] 357[s7;i1120;a17; [%-*C@3 keyflags]-|Combination of key flags for Shift, 358Ctrl and Alt keys.&] 359[s3;%- &] 360[s4;%- &] 361[s5;:Ctrl`:`:LeftDown`(Point`,dword`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* LeftDown 362]([_^`:`:Point^ Point]_[*@3 p], [_^`:`:dword^ dword]_[*@3 keyflags])&] 363[s2;b17;a17; This method is called by default implementation of MouseEvent 364when mouse left button is pressed.&] 365[s7;i1120;a17; [%-*C@3 p]-|Position of mouse cursor in view coordinates.&] 366[s7;i1120;a17; [%-*C@3 keyflags]-|Combination of key flags for Shift, 367Ctrl and Alt keys.&] 368[s3;%- &] 369[s4;%- &] 370[s5;:Ctrl`:`:LeftDouble`(Point`,dword`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* LeftDo 371uble]([_^`:`:Point^ Point]_[*@3 p], [_^`:`:dword^ dword]_[*@3 keyflags])&] 372[s2;b17;a17; This method is called by default implementation of MouseEvent 373when mouse left button is double`-clicked. Default implementation 374calls LeftDown.&] 375[s7;i1120;a17; [%-*C@3 p]-|Position of mouse cursor in view coordinates.&] 376[s7;i1120;a17; [%-*C@3 keyflags]-|Combination of key flags for Shift, 377Ctrl and Alt keys.&] 378[s3;%- &] 379[s4;%- &] 380[s5;:Ctrl`:`:LeftTriple`(Point`,dword`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* LeftTr 381iple]([_^`:`:Point^ Point]_[*@3 p], [_^`:`:dword^ dword]_[*@3 keyflags])&] 382[s2;b17;a17; This method is called by default implementation of MouseEvent 383when mouse left button is triple`-clicked. Default implementation 384calls LeftDown.&] 385[s3;%- &] 386[s4;%- &] 387[s5;:Ctrl`:`:LeftDrag`(Point`,dword`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* LeftDrag 388]([_^`:`:Point^ Point]_[*@3 p], [_^`:`:dword^ dword]_[*@3 keyflags])&] 389[s2;b17;a17; This method is called by default implementation of MouseEvent 390when user moves the mouse while holding left button by more than 391GUI`_DragDistance pixels. [%-*@3 p] is the starting point of drag, 392not the current mouse position.&] 393[s3;%- &] 394[s4;%- &] 395[s5;:Ctrl`:`:LeftHold`(Point`,dword`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* LeftHold 396]([_^`:`:Point^ Point]_[*@3 p], [_^`:`:dword^ dword]_[*@3 keyflags])&] 397[s2;b17;a17; This method is called by default implementation of MouseEvent 398when user holds the mouse left button down for a while.&] 399[s3;%- &] 400[s4;%- &] 401[s5;:Ctrl`:`:LeftRepeat`(Point`,dword`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* LeftRe 402peat]([_^`:`:Point^ Point]_[*@3 p], [_^`:`:dword^ dword]_[*@3 keyflags])&] 403[s2;b17;a17; This method is repeatedly called by default implementation 404of MouseEvent when mouse left button is pressed for some time, 405imitating keyboard autorepeat behaviour.&] 406[s7;i1120;a17; [%-*C@3 p]-|Position of mouse cursor in view coordinates.&] 407[s7;i1120;a17; [%-*C@3 keyflags]-|Combination of key flags for Shift, 408Ctrl and Alt keys.&] 409[s3;%- &] 410[s4;%- &] 411[s5;:Ctrl`:`:LeftUp`(Point`,dword`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* LeftUp]([_^`:`:Point^ P 412oint]_[*@3 p], [_^`:`:dword^ dword]_[*@3 keyflags])&] 413[s2;b17;a17; This method is called by default implementation of MouseEvent 414when mouse left button is released.&] 415[s7;i1120;a17; [%-*C@3 p]-|Position of mouse cursor in view coordinates.&] 416[s7;i1120;a17; [%-*C@3 keyflags]-|Combination of key flags for Shift, 417Ctrl and Alt keys.&] 418[s3;%- &] 419[s4;%- &] 420[s5;:Ctrl`:`:RightDown`(Point`,dword`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* RightDo 421wn]([_^`:`:Point^ Point]_[*@3 p], [_^`:`:dword^ dword]_[*@3 keyflags])&] 422[s2;b17;a17; This method is called by default implementation of MouseEvent 423when mouse right button is pressed.&] 424[s7;i1120;a17; [%-*C@3 p]-|Position of mouse cursor in view coordinates.&] 425[s7;i1120;a17; [%-*C@3 keyflags]-|Combination of key flags for Shift, 426Ctrl and Alt keys.&] 427[s3;%- &] 428[s4;%- &] 429[s5;:Ctrl`:`:RightDouble`(Point`,dword`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* Right 430Double]([_^`:`:Point^ Point]_[*@3 p], [_^`:`:dword^ dword]_[*@3 keyflags])&] 431[s2;b17;a17; This method is called by default implementation of MouseEvent 432when mouse right button is double`-clicked. Default implementation 433calls RightDown.&] 434[s7;i1120;a17; [%-*C@3 p]-|Position of mouse cursor in view coordinates.&] 435[s7;i1120;a17; [%-*C@3 keyflags]-|Combination of key flags for Shift, 436Ctrl and Alt keys.&] 437[s3;%- &] 438[s4;%- &] 439[s5;:Ctrl`:`:RightTriple`(Point`,dword`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* Right 440Triple]([_^`:`:Point^ Point]_[*@3 p], [_^`:`:dword^ dword]_[*@3 keyflags])&] 441[s2;b17;a17; This method is called by default implementation of MouseEvent 442when mouse right button is triple`-clicked. Default implementation 443calls RightDown.&] 444[s3;%- &] 445[s4;%- &] 446[s5;:Ctrl`:`:RightDrag`(Point`,dword`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* RightDr 447ag]([_^`:`:Point^ Point]_[*@3 p], [_^`:`:dword^ dword]_[*@3 keyflags])&] 448[s2;b17;a17; This method is called by default implementation of MouseEvent 449when user moves the mouse while holding right button by more 450than GUI`_DragDistance pixels. [%-*@3 p] is the starting point 451of drag, not the current mouse position.&] 452[s3;%- &] 453[s4;%- &] 454[s5;:Ctrl`:`:RightHold`(Point`,dword`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* RightHo 455ld]([_^`:`:Point^ Point]_[*@3 p], [_^`:`:dword^ dword]_[*@3 keyflags])&] 456[s2;b17;a17; This method is called by default implementation of MouseEvent 457when user holds the mouse right button down for a while.&] 458[s3;%- &] 459[s4;%- &] 460[s5;:Ctrl`:`:RightRepeat`(Point`,dword`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* Right 461Repeat]([_^`:`:Point^ Point]_[*@3 p], [_^`:`:dword^ dword]_[*@3 keyflags])&] 462[s2;b17;a17; This method is repeatedly called by default implementation 463of MouseEvent when mouse right button is pressed for some time, 464imitating keyboard autorepeat behaviour.&] 465[s7;i1120;a17; [%-*C@3 p]-|Position of mouse cursor in view coordinates.&] 466[s7;i1120;a17; [%-*C@3 keyflags]-|Combination of key flags for Shift, 467Ctrl and Alt keys.&] 468[s3;%- &] 469[s4;%- &] 470[s5;:Ctrl`:`:RightUp`(Point`,dword`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* RightUp]( 471[_^`:`:Point^ Point]_[*@3 p], [_^`:`:dword^ dword]_[*@3 keyflags])&] 472[s2;b17;a17; This method is called by default implementation of MouseEvent 473when mouse left button is released.&] 474[s7;i1120;a17; [%-*C@3 p]-|Position of mouse cursor in view coordinates.&] 475[s7;i1120;a17; [%-*C@3 keyflags]-|Combination of key flags for Shift, 476Ctrl and Alt keys.&] 477[s3;%- &] 478[s4;%- &] 479[s5;:Ctrl`:`:MiddleDown`(Point`,dword`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* Middle 480Down]([_^Point^ Point]_[*@3 p], [_^dword^ dword]_[*@3 keyflags])&] 481[s2;b17;a17; This method is called by default implementation of MouseEvent 482when mouse middle button is pressed.&] 483[s7;i1120;a17; [%-*C@3 p]-|Position of mouse cursor in view coordinates.&] 484[s7;i1120;a17; [%-*C@3 keyflags]-|Combination of key flags for Shift, 485Ctrl and Alt keys.&] 486[s3; &] 487[s4;%- &] 488[s5;:Ctrl`:`:MiddleDouble`(Point`,dword`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* Midd 489leDouble]([_^Point^ Point]_[*@3 p], [_^dword^ dword]_[*@3 keyflags])&] 490[s2;b17;a17; This method is called by default implementation of MouseEvent 491when mouse left button is double`-clicked.&] 492[s7;i1120;a17; [%-*C@3 p]-|Position of mouse cursor in view coordinates.&] 493[s7;i1120;a17; [%-*C@3 keyflags]-|Combination of key flags for Shift, 494Ctrl and Alt keys.&] 495[s3; &] 496[s4;%- &] 497[s5;:Ctrl`:`:MiddleTriple`(Point`,dword`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* Midd 498leTriple]([_^Point^ Point]_[*@3 p], [_^dword^ dword]_[*@3 keyflags])&] 499[s2; This method is called by default implementation of MouseEvent 500when mouse right button is triple`-clicked.&] 501[s7;i1120;a17; [%-*C@3 p]-|Position of mouse cursor in view coordinates.&] 502[s7;i1120;a17; [%-*C@3 keyflags]-|Combination of key flags for Shift, 503Ctrl and Alt keys.&] 504[s3; &] 505[s4;%- &] 506[s5;:Ctrl`:`:MiddleRepeat`(Point`,dword`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* Midd 507leRepeat]([_^Point^ Point]_[*@3 p], [_^dword^ dword]_[*@3 keyflags])&] 508[s2; This method is repeatedly called by default implementation of 509MouseEvent when mouse right button is pressed for some time, 510imitating keyboard autorepeat behaviour.&] 511[s7;i1120;a17; [%-*C@3 p]-|Position of mouse cursor in view coordinates.&] 512[s7;i1120;a17; [%-*C@3 keyflags]-|Combination of key flags for Shift, 513Ctrl and Alt keys.&] 514[s3; &] 515[s4;%- &] 516[s5;:Ctrl`:`:MiddleDrag`(Point`,dword`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* Middle 517Drag]([_^Point^ Point]_[*@3 p], [_^dword^ dword]_[*@3 keyflags])&] 518[s2; This method is called by default implementation of MouseEvent 519when user moves the mouse while holding middle button by more 520than GUI`_DragDistance pixels. [%-*@3 p] is the starting point 521of drag, not the current mouse position.&] 522[s3; &] 523[s4;%- &] 524[s5;:Ctrl`:`:MiddleHold`(Point`,dword`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* Middle 525Hold]([_^Point^ Point]_[*@3 p], [_^dword^ dword]_[*@3 keyflags])&] 526[s2; This method is called by default implementation of MouseEvent 527when user holds the mouse middle button down for a while.&] 528[s7;i1120;a17; [%-*C@3 p]-|Position of mouse cursor in view coordinates.&] 529[s7;i1120;a17; [%-*C@3 keyflags]-|Combination of key flags for Shift, 530Ctrl and Alt keys.&] 531[s3; &] 532[s4;%- &] 533[s5;:Ctrl`:`:MiddleUp`(Point`,dword`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* MiddleUp 534]([_^Point^ Point]_[*@3 p], [_^dword^ dword]_[*@3 keyflags])&] 535[s2; This method is called by default implementation of MouseEvent 536when mouse middle button is released.&] 537[s7;i1120;a17; [%-*C@3 p]-|Position of mouse cursor in view coordinates.&] 538[s7;i1120;a17; [%-*C@3 keyflags]-|Combination of key flags for Shift, 539Ctrl and Alt keys.&] 540[s3; &] 541[s4;%- &] 542[s5;:Ctrl`:`:MouseWheel`(Point`,int`,dword`):%- [@(0.0.255) virtual] 543[@(0.0.255) void]_[* MouseWheel]([_^`:`:Point^ Point]_[*@3 p], [@(0.0.255) int]_[*@3 zdelta], 544 [_^`:`:dword^ dword]_[*@3 keyflags])&] 545[s2;b17;a17; This method is called by default implementation of MouseEvent 546when mouse wheel is rotated. Default implementation of this method 547propagates event to the parent and suppresses call of ChildMouseEvent 548for the parent.&] 549[s7;i1120;a17; [%-*C@3 p]-|Position of mouse cursor in view coordinates.&] 550[s7;i1120;a17; [%-*C@3 zdelta]-|Amount of rotation.&] 551[s7;i1120;a17; [%-*C@3 keyflags]-|Combination of key flags for Shift, 552Ctrl and Alt keys.&] 553[s3;%- &] 554[s4;%- &] 555[s5;:Ctrl`:`:MouseLeave`(`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* MouseLeave]()&] 556[s2;b17;a17; This method is called by default implementation of MouseEvent 557when mouse cursor leaves view area of Ctrl.&] 558[s3;%- &] 559[s4;%- &] 560[s5;:Ctrl`:`:DragAndDrop`(Point`,PasteClip`&`):%- [@(0.0.255) virtual] 561[@(0.0.255) void]_[* DragAndDrop]([_^Point^ Point]_[*@3 p], [_^PasteClip^ PasteClip][@(0.0.255) `& 562]_[*@3 d])&] 563[s2; This method is called when user performs drag and drop operation 564over view area. The drag operation can either be just moving 565the mouse, or actual drop `- the difference is that for actual 566drop the PasteClip`::Accept method returns true. This allows to 567share drag and drop logic, which is very similar, in the single 568method.&] 569[s3; &] 570[s4;%- &] 571[s5;:Ctrl`:`:FrameDragAndDrop`(Point`,PasteClip`&`):%- [@(0.0.255) virtual] 572[@(0.0.255) void]_[* FrameDragAndDrop]([_^Point^ Point]_[*@3 p], [_^PasteClip^ PasteClip][@(0.0.255) `& 573]_[*@3 d])&] 574[s2; This method is called when user performs drag and drop operation 575over frame area. The drag operation can either be just moving 576the mouse, or actual drop `- the difference is that for actual 577drop the PasteClip`::Accept method returns true. This allows to 578share drag and drop logic, which is very similar, in the single 579method.&] 580[s3; &] 581[s4;%- &] 582[s5;:Ctrl`:`:DragRepeat`(Point`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* DragRepeat]([_^Point^ P 583oint]_[*@3 p])&] 584[s2; This method is called when user holds his drag operation over 585single position for some time. This is similar to LeftRepeat 586and it is usually used to scroll the content of view when DragRepeat 587occurs at the border area of view.&] 588[s3; &] 589[s4;%- &] 590[s5;:Ctrl`:`:DragEnter`(`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* DragEnter]()&] 591[s2; Called when user enters view with drag.&] 592[s3;%- &] 593[s4;%- &] 594[s5;:Ctrl`:`:DragLeave`(`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* DragLeave]()&] 595[s2; Called when user`'s drag leaves the view.&] 596[s3;%- &] 597[s4;%- &] 598[s5;:Ctrl`:`:GetDropData`(const String`&`)const:%- [@(0.0.255) virtual] 599[_^String^ String]_[* GetDropData]([@(0.0.255) const]_[_^String^ String][@(0.0.255) `&]_[*@3 f 600mt])_[@(0.0.255) const]&] 601[s2; This method is invoked to obtain drop data from Ctrl if such 602data was not supplied as ClipData in call to DoDragAndDrop. Default 603implementation calls GetSelectionData.&] 604[s3; &] 605[s4;%- &] 606[s5;:Ctrl`:`:GetSelectionData`(const String`&`)const:%- [@(0.0.255) virtual] 607[_^String^ String]_[* GetSelectionData]([@(0.0.255) const]_[_^String^ String][@(0.0.255) `& 608]_[*@3 fmt])_[@(0.0.255) const]&] 609[s2; This method should return the widget`'s actual selection in 610requested format. It is used for X11 middle mouse selection paste 611operation ans as default implementation of GetDropData, because 612usually the data to be transfered by drag`&drop operation is 613the selection.&] 614[s3; &] 615[s4;%- &] 616[s5;:Ctrl`:`:CursorImage`(Point`,dword`):%- [@(0.0.255) virtual] [_^`:`:Image^ Image]_[* Cu 617rsorImage]([_^`:`:Point^ Point]_[*@3 p], [_^`:`:dword^ dword]_[*@3 keyflags])&] 618[s2;b17;a17; This method is called by default implementation of MouseEvent 619when the shape of mouse cursor is to be determined..&] 620[s7;i1120;a17; [%-*C@3 p]-|Position of mouse cursor in view coordinates.&] 621[s7;i1120;a17; [%-*C@3 keyflags]-|Combination of key flags for Shift, 622Ctrl and Alt keys.&] 623[s7;i1120;a17; [*/ Return value]-|Image of new cursor. Default implementation 624returns Image`::Arrow().&] 625[s3;%- &] 626[s4;%- &] 627[s5;:Ctrl`:`:Key`(dword`,int`):%- [@(0.0.255) virtual] [@(0.0.255) bool]_[* Key]([_^`:`:dword^ d 628word]_[*@3 key], [@(0.0.255) int]_[*@3 count])&] 629[s2;b17;a17; This method provides keyboard input. When keyboard event 630occurs and some of U`+`+ application Ctrls has input focus, its 631Key method is called. If Key method returns true, processing 632of key event is finished. If it returns false, U`+`+ calls Key 633method of parent Ctrl and it repeats until either true is returned 634or Ctrl has no parent. If such top`-level Ctrl is reached, U`+`+ 635calls its HotKey method. Default implementation is void and returns 636false.&] 637[s7;i1120;a17; [%-*C@3 key]-|Key identifier. If it is less than 65536, 638it indicates character code, otherwise it is key`-code. Key`-code 639is combination of basic key codes and further flags indicating 640state of shift keys and push/release events.&] 641[s7;i1120;a17; [%-*C@3 count]-|Accumulated autorepeat count.&] 642[s7;i1120;a17; [*/ Return value]-|Method should return true if further 643propagation is not desirable (in most cases this indicates that 644Ctrl accepted the key).&] 645[s3;%- &] 646[s4;%- &] 647[s5;:Ctrl`:`:HotKey`(dword`):%- [@(0.0.255) virtual] [@(0.0.255) bool]_[* HotKey]([_^`:`:dword^ d 648word]_[*@3 key])&] 649[s2;b17;a17; This method is called when no Ctrl accepts key event 650using Key method. Default implementation calls HotKey method 651child Ctrls. If some child Ctrl returns true, method returns 652true, otherwise it returns false.&] 653[s7;i1120;a17; [%-*C@3 key]-|Key indentifier.&] 654[s7;i1120;a17; [*/ Return value]-|Method should return true to stop 655further distribution of key event via HotKey methods.&] 656[s3;%- &] 657[s4;%- &] 658[s5;:Ctrl`:`:GotFocus`(`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* GotFocus]()&] 659[s2;b17;a17; This method is called when Ctrl receives input focus. 660Default implementation is void.&] 661[s3;%- &] 662[s4;%- &] 663[s5;:Ctrl`:`:LostFocus`(`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* LostFocus]()&] 664[s2;b17;a17; This method is called when Ctrl loses input focus. Default 665implementation is void.&] 666[s3;%- &] 667[s4;%- &] 668[s5;:Ctrl`:`:ChildFrameMouseEvent`(Ctrl`*`,int`,Point`,int`,dword`):%- [@(0.0.255) virt 669ual] [@(0.0.255) void]_[* ChildFrameMouseEvent]([_^Ctrl^ Ctrl]_`*[*@3 child], 670[@(0.0.255) int]_[*@3 event], [_^Point^ Point]_[*@3 p], [@(0.0.255) int]_[*@3 zdelta], 671[_^dword^ dword]_[*@3 keyflags])&] 672[s2; This method is invoked before the [/ frame] mouse [%-*@3 event] 673is routed to the [%-*@3 child]. Parameters of the event are the 674same as those in MouseEvent method. Default implementation calls 675the parent`'s ChildMouseEvent method.&] 676[s3;%- &] 677[s4;%- &] 678[s5;:Ctrl`:`:ChildMouseEvent`(Ctrl`*`,int`,Point`,int`,dword`):%- [@(0.0.255) virtual] 679[@(0.0.255) void]_[* ChildMouseEvent]([_^`:`:Ctrl^ Ctrl]_`*[*@3 child], 680[@(0.0.255) int]_[*@3 event], [_^`:`:Point^ Point]_[*@3 p], [@(0.0.255) int]_[*@3 zdelta], 681[_^`:`:dword^ dword]_[*@3 keyflags])&] 682[s2;b17;a17; This method is invoked before the mouse [%-*@3 event] 683is routed to the [%-*@3 child]. Parameters of the event are the 684same as those in MouseEvent method. Default implementation calls 685the parent`'s ChildMouseEvent method.&] 686[s3; &] 687[s4;%- &] 688[s5;:Ctrl`:`:ChildGotFocus`(`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* ChildGotFocus]( 689)&] 690[s2;b17;a17; This method is invoked when any of child Ctrls receives 691input focus.&] 692[s3;%- &] 693[s4;%- &] 694[s5;:Ctrl`:`:ChildLostFocus`(`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* ChildLostFocus 695]()&] 696[s2;b17;a17; This method is invoked when any of child Ctrls loses 697input focus.&] 698[s3;%- &] 699[s4;%- &] 700[s5;:Ctrl`:`:GetAccessKeys`(`)const:%- [@(0.0.255) virtual] [_^`:`:dword^ dword]_[* GetAcce 701ssKeys]()_[@(0.0.255) const]&] 702[s2;b17;a17; Ctrl should use this method to signal presence of access 703keys. Access keys are keyboard keys that can be used to access 704or activate dialog functions when pressed together with Alt key. 705They can be defined by application designer (usually using `& 706or `\b in labels), or they are automatically synthesized using 707[* AssignAccessKeys] method. If Ctrl (of one of Ctrls in its child 708tree) has some access keys and those keys are letters (in range 709`'A`' `- `'Z`'), they should be returned as bit value using AccessKeyBit 710function. Other access keys should be indicated by bit 0 (that 711means, by binary or of 1 to result). Default implementation returns 7120.&] 713[s7;i1120;a17; [*/ Return value]-|Bit set of access keys.&] 714[s3;%- &] 715[s4;%- &] 716[s5;:Ctrl`:`:AssignAccessKeys`(dword`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* AssignA 717ccessKeys]([_^`:`:dword^ dword]_[*@3 used])&] 718[s2;b17;a17; This method gives a Ctrl chance to synthesize its letter 719access keys.&] 720[s7;i1120;a17; [%-*C@3 used]-|Set of letter access keys that are already 721used and should not be chosen by Ctrl as its access keys.&] 722[s3; &] 723[s4;%- &] 724[s5;:Ctrl`:`:ChildAdded`(Ctrl`*`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* ChildAdded]( 725[_^`:`:Ctrl^ Ctrl]_`*[*@3 child])&] 726[s2;b17;a17; This method is invoked when child is added to Ctrl.&] 727[s7;i1120;a17; [%-*C@3 child]-|Pointer to child added.&] 728[s3;%- &] 729[s4;%- &] 730[s5;:Ctrl`:`:ChildRemoved`(Ctrl`*`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* ChildRemov 731ed]([_^`:`:Ctrl^ Ctrl]_`*[*@3 child])&] 732[s2;b17;a17; This method is invoked when child is removed from Ctrl.&] 733[s7;i1120;a17; [%-*C@3 child]-|Pointer to child removed.&] 734[s3;%- &] 735[s4;%- &] 736[s5;:Ctrl`:`:ParentChange`(`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* ParentChange]()&] 737[s2;b17;a17; This method is called when Ctrl is added or removed 738from parent.&] 739[s3;%- &] 740[s4;%- &] 741[s5;:Ctrl`:`:State`(int`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* State]([@(0.0.255) int 742]_[*@3 reason])&] 743[s2;b17;a17; This method is used to notify Ctrls about special state`-change 744events that are not covered by virtual methods. Method is called 745for entire child tree of Ctrl whose state has changed.&] 746[s7;i1120;a17; [%-*C@3 reason]-|Code of event. Standard reasons are 747enumerated by StateReason enum.&] 748[s3;%- &] 749[s4;%- &] 750[s5;:Ctrl`:`:Layout`(`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* Layout]()&] 751[s2;b17;a17; This method is invoked when layout of Ctrl has to be 752refreshed. This is usually either before window is displayed 753or when the Ctrl is resized.&] 754[s3;%- &] 755[s4;%- &] 756[s5;:Ctrl`:`:GetMinSize`(`)const:%- [@(0.0.255) virtual] [_^`:`:Size^ Size]_[* GetMinSize]( 757)_[@(0.0.255) const]&] 758[s2;b17;a17; This method should return [/ minimal] size of Ctrl. This 759is used e.g. to limit the minimal size of windows. Default implementation 760returns size suitable for edit`-field type of widget, based on 761default GUI font and EditFieldIsThin setting.&] 762[s3;%- &] 763[s4;%- &] 764[s5;:Ctrl`:`:GetStdSize`(`)const:%- [@(0.0.255) virtual] [_^`:`:Size^ Size]_[* GetStdSize]( 765)_[@(0.0.255) const]&] 766[s2;b17;a17; This method should return [/ standard] size of Ctrl. Default 767implementation returns calls GetMinSize, increases width 10 and 768returns resulting Size.&] 769[s3;%- &] 770[s4;%- &] 771[s5;:Ctrl`:`:GetMaxSize`(`)const:%- [@(0.0.255) virtual] [_^Size^ Size]_[* GetMaxSize]()_[@(0.0.255) c 772onst]&] 773[s2; This method should return [/ maximal] size of Ctrl. Default implementation 774returns the size of virtual working area. Redefinition can be 775used to e.g. define the maximum size of window (as maximal size 776of view area).&] 777[s3;%- &] 778[s4;%- &] 779[s5;:Ctrl`:`:IsShowEnabled`(`)const:%- [@(0.0.255) virtual] [@(0.0.255) bool]_[* IsShowEnab 780led]()_[@(0.0.255) const]&] 781[s2;b17;a17; This method indicates whether Ctrl should be painted 782as enabled. Default implementation returns IsEnabled() `&`& (!parent 783`|`| parent`->IsShowEnabled()), however TopWindow overloads this 784function so that owner of modal dialogs while being disabled 785during modal dialog lifetime are displayed with enabled Ctrls.&] 786[s7;i1120;a17; [*/ Return value]-|true if Ctrl should be painted as 787enabled.&] 788[s3;%- &] 789[s4;%- &] 790[s5;:Ctrl`:`:GetOpaqueRect`(`)const:%- [@(0.0.255) virtual] [_^Rect^ Rect]_[* GetOpaqueRect 791]()_[@(0.0.255) const]&] 792[s2; Returns the rectangle of view area that is opaque (is completely 793filled when painting the widget). The default implementation 794returns the whole view area if Transparent flag is set, empty 795rectangle otherwise. Paint routine uses this information to optimize.&] 796[s3;%- &] 797[s4;%- &] 798[s5;:Ctrl`:`:GetVoidRect`(`)const:%- [@(0.0.255) virtual] [_^Rect^ Rect]_[* GetVoidRect]()_ 799[@(0.0.255) const]&] 800[s2; Returns the rectangle of view area that is fully transparent 801(nothing is painted in that rectangle). Paint routine uses this 802information to optimize.&] 803[s3;%- &] 804[s4;%- &] 805[s5;:Ctrl`:`:Updated`(`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* Updated]()&] 806[s2; Invoked by Update method. Default implementation is empty.&] 807[s3;%- &] 808[s4;%- &] 809[s5;:Ctrl`:`:OverPaint`(`)const:%- [@(0.0.255) virtual] [@(0.0.255) int]_[* OverPaint]()_[@(0.0.255) c 810onst]&] 811[s2;b17;a17; This method can returns non`-zero number that represents 812paint extension margin of view area `- Ctrl can paint inside 813this margin despite that fact that it does not belong to view. 814This is useful to represent some specific skinning effect (like 815glare around the button). Default implementation returns zero.&] 816[s3;%- &] 817[s4;%- &] 818[s5;:Ctrl`:`:Close`(`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* Close]()&] 819[s2;b17;a17; Closes top`-level Ctrl. If Ctrl is not top`-level, has 820no effect. If it is and is open in host GUI (either as pop`-up 821or as [^topic`:`/`/CtrlCore`/src`/TopWindow`$en`-us`#`:`:TopWindow`:`:class^ TopWin 822dow]), it should close it. Default implementation closes. TopWindow 823overrides this method to break modal loop instead of closing 824if modal loop is performed for it.&] 825[s3;%- &] 826[s4;%- &] 827[s5;:Ctrl`:`:IsOcxChild`(`):%- [@(0.0.255) virtual] [@(0.0.255) bool]_[* IsOcxChild]()&] 828[s2;b17;a17; Used for Ocx control implementation.&] 829[s3;%- &] 830[s4;%- &] 831[s5;:Ctrl`:`:GetDesc`(`)const:%- [@(0.0.255) virtual] [_^String^ String]_[* GetDesc]()_[@(0.0.255) c 832onst]&] 833[s2; Returns description of Ctrl for diagnostic purposes. Default 834implementation is empty.&] 835[s3;%- &] 836[s4;%- &] 837[s5;:Ctrl`:`:WhenAction:%- [_^Callback^ Callback]_[* WhenAction]&] 838[s2; This callback is used to signal that [/ user] has changed the 839value (or state) of widget.&] 840[s3;%- &] 841[s4;%- &] 842[s5;:Ctrl`:`:SetData`(const Value`&`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* SetData]( 843[@(0.0.255) const]_[_^`:`:Value^ Value][@(0.0.255) `&]_[*@3 data])&] 844[s2;b17;a17; Sets the new value to the object. Default implementation 845is void.&] 846[s3;%- &] 847[s4;%- &] 848[s5;:Ctrl`:`:GetData`(`)const:%- [@(0.0.255) virtual] [_^`:`:Value^ Value]_[* GetData]()_[@(0.0.255) c 849onst]&] 850[s2;b17;a17; Gets current value of the object. Default implementation 851returns Value() `- void value.&] 852[s7;i1120;a17; [*/ Return value]-|Value of object.&] 853[s3;%- &] 854[s4;%- &] 855[s5;:Ctrl`:`:SetModify`(`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* SetModify]()&] 856[s2;b17;a17; Sets modification flag.&] 857[s3;%- &] 858[s4;%- &] 859[s5;:Ctrl`:`:ClearModify`(`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* ClearModify]()&] 860[s2;b17;a17; Clears modification flag.&] 861[s3;%- &] 862[s4;%- &] 863[s5;:Ctrl`:`:IsModified`(`)const:%- [@(0.0.255) virtual] [@(0.0.255) bool]_[* IsModified]() 864_[@(0.0.255) const]&] 865[s2;b17;a17; Returns the value modification flag.&] 866[s3;%- &] 867[s4;%- &] 868[s5;:Ctrl`:`:Accept`(`):%- [@(0.0.255) virtual] [@(0.0.255) bool]_[* Accept]()&] 869[s2;b17;a17; This virtual method is called when value of Ctrl is 870about to be accepted. Default implementation calls Accept for 871all child Ctrls and returns false if any of child Ctrls returns 872false, true otherwise.&] 873[s2;b17;a17; Typical use is when user pressed OK button. If any Ctrl 874of dialog returns false, OK is canceled.&] 875[s2;b17;a17; Typical implementation of this method should test whether 876current state of Ctrl (its edited value) matches requirements. 877If it does, it should finish editing, accept edited value and 878return true. Otherwise it should return false, &] 879[s7;i1120;a17; [*/ Return value]-|Ctrl should return true if it successfully 880finished editing, false otherwise.&] 881[s3;%- &] 882[s4;%- &] 883[s5;:Ctrl`:`:Reject`(`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* Reject]()&] 884[s2;b17;a17; This virtual method is called when Ctrl should abort 885editing, discarding edited value. Default implementation calls 886Reject for all child Ctrls.&] 887[s3;%- &] 888[s4;%- &] 889[s5;:Ctrl`:`:Serialize`(Stream`&`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* Serialize]( 890[_^`:`:Stream^ Stream][@(0.0.255) `&]_[*@3 s])&] 891[s2;b17;a17; Serialization method. Should serialize the value of 892Ctrl in a way that is suitable for dialog backup and optional 893restore (e.g. when user presses Cancel button).&] 894[s3;%- &] 895[s4;%- &] 896[s5;:Ctrl`:`:Jsonize`(JsonIO`&`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* Jsonize]([_^JsonIO^ J 897sonIO][@(0.0.255) `&]_[*@3 jio])&] 898[s2; Method to convert the data of widget to/from JSON. Default implementation 899calls Jsonize for Value obtained/set by GetData/SetData.&] 900[s3; &] 901[s4;%- &] 902[s5;:Ctrl`:`:Xmlize`(XmlIO`&`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* Xmlize]([_^XmlIO^ X 903mlIO][@(0.0.255) `&]_[*@3 xio])&] 904[s2; Method to convert the data of widget to/from XML. Default implementation 905calls Jsonize for Value obtained/set by GetData/SetData.&] 906[s3; &] 907[s4;%- &] 908[s5;:Ctrl`:`:AddChild`(Ctrl`*`):%- [@(0.0.255) void]_[* AddChild]([_^`:`:Ctrl^ Ctrl]_`*[*@3 c 909hild])&] 910[s2;b17;a17; Adds a child Ctrl as last one.&] 911[s7;i1120;a17; [%-*C@3 child]-|Pointer to child Ctrl at the end of child 912list. Note that U`+`+ never takes ownership of Ctrls `- never 913calls delete for [@3 child. ]That allows using non`-heap based 914Ctrls. &] 915[s3;%- &] 916[s4;%- &] 917[s5;:Ctrl`:`:AddChild`(Ctrl`*`,Ctrl`*`):%- [@(0.0.255) void]_[* AddChild]([_^`:`:Ctrl^ Ctrl 918]_`*[*@3 child], [_^`:`:Ctrl^ Ctrl]_`*[*@3 insafter])&] 919[s2;b17;a17; Inserts child Ctrl after another Ctrl that is already 920child. If [%-*@3 insafter] is NULL, child is inserted as the first 921child.&] 922[s7;i1120;a17; [%-*C@3 child]-|Pointer to child Ctrl.&] 923[s7;i1120;a17; [%-*C@3 insafter]-|Ctrl that will be before inserted 924Ctrl.&] 925[s3;%- &] 926[s4;%- &] 927[s5;:Ctrl`:`:AddChildBefore`(Ctrl`*`,Ctrl`*`):%- [@(0.0.255) void]_[* AddChildBefore]([_^`:`:Ctrl^ C 928trl]_`*[*@3 child], [_^`:`:Ctrl^ Ctrl]_`*[*@3 insbefore])&] 929[s2;b17;a17; Inserts child Ctrl before another Ctrl that is already 930child. If [%-*@3 insbefore], child is inserted as last child.&] 931[s7;i1120;a17; [%-*C@3 child]-|Pointer to child Ctrl.&] 932[s7;i1120;a17; [%-*C@3 insbefore]-|Ctrl that will be after inserted 933Ctrl.&] 934[s3;%- &] 935[s4;%- &] 936[s5;:Ctrl`:`:RemoveChild`(Ctrl`*`):%- [@(0.0.255) void]_[* RemoveChild]([_^`:`:Ctrl^ Ctrl]_ 937`*[*@3 child])&] 938[s2;b17;a17; Removes Ctrl from child list. Ctrl is never deleted.&] 939[s7;i1120;a17; [%-*C@3 child]-|Child to be removed.&] 940[s3;%- &] 941[s4;%- &] 942[s5;:Ctrl`:`:GetParent`(`)const:%- [_^`:`:Ctrl^ Ctrl]_`*[* GetParent]()_[@(0.0.255) const]&] 943[s2;b17;a17; Returns parent of Ctrl or NULL if Ctrl is topmost.&] 944[s7;i1120;a17; [*/ Return value]-|Pointer to parent Ctrl.&] 945[s3;%- &] 946[s4;%- &] 947[s5;:Ctrl`:`:GetLastChild`(`)const:%- [_^`:`:Ctrl^ Ctrl]_`*[* GetLastChild]()_[@(0.0.255) c 948onst]&] 949[s2;b17;a17; Returns last child.&] 950[s7;i1120;a17; [*/ Return value]-|Pointer to last child or NULL if Ctrl 951has no children.&] 952[s3;%- &] 953[s4;%- &] 954[s5;:Ctrl`:`:GetFirstChild`(`)const:%- [_^`:`:Ctrl^ Ctrl]_`*[* GetFirstChild]()_[@(0.0.255) c 955onst]&] 956[s2;b17;a17; Returns first child.&] 957[s7;i1120;a17; [*/ Return value]-|Pointer to first child or NULL if 958Ctrl has no children.&] 959[s3;%- &] 960[s4;%- &] 961[s5;:Ctrl`:`:GetPrev`(`)const:%- [_^`:`:Ctrl^ Ctrl]_`*[* GetPrev]()_[@(0.0.255) const]&] 962[s2;b17;a17; Returns child that is before this Ctrl in child list 963or NULL if Ctrl is first or not in list.&] 964[s7;i1120;a17; [*/ Return value]-|Pointer to previous child or NULL.&] 965[s3;%- &] 966[s4;%- &] 967[s5;:Ctrl`:`:GetNext`(`)const:%- [_^`:`:Ctrl^ Ctrl]_`*[* GetNext]()_[@(0.0.255) const]&] 968[s2;b17;a17; Returns next child that is after this Ctrl in child 969list or NULL if Ctrl is last or not in list.&] 970[s7;i1120;a17; [*/ Return value]-|Pointer to next child or NULL.&] 971[s3;%- &] 972[s3;%- &] 973[s4;%- &] 974[s5;:Ctrl`:`:GetChildIndex`(const Ctrl`*`)const:%- [@(0.0.255) int]_[* GetChildIndex]([@(0.0.255) c 975onst]_[_^Ctrl^ Ctrl]_`*[*@3 child])_[@(0.0.255) const]&] 976[s2; Returns the index of [%-*@3 child] (first child has index 0, second 977child 1 etc...). If [%-*@3 child] is not present in this Ctrl, 978returns `-1. Note that this function performs sequential scan 979of child (results in O(n) complexity).&] 980[s3; &] 981[s4;%- &] 982[s5;:Ctrl`:`:GetChildCount`(`)const:%- [@(0.0.255) int]_[* GetChildCount]()_[@(0.0.255) con 983st]&] 984[s2; Returns the number of child ctrls. Note that this function performs 985sequential scan of child (results in O(n) complexity).&] 986[s3; &] 987[s4;%- &] 988[s5;:Upp`:`:Ctrl`:`:GetAscendant`(`)const:%- [@(0.0.255) template]_<[@(0.0.255) class]_[*@4 T 989]>_[*@4 T]_`*[* GetAscendant]()_[@(0.0.255) const]&] 990[s2; Returns first ascendant (parent, parent of parent etc..) that 991has type [%-*@4 T].&] 992[s3;%- &] 993[s4;%- &] 994[s5;:Ctrl`:`:GetIndexChild`(int`)const:%- [_^Ctrl^ Ctrl]_`*[* GetIndexChild]([@(0.0.255) in 995t]_[*@3 i])_[@(0.0.255) const]&] 996[s2; Retruns child at index [%-*@3 i] or NULL if there is none. Note 997that this function performs sequential scan of child (results 998in O(n) complexity).&] 999[s3;%- &] 1000[s4;%- &] 1001[s5;:Upp`:`:Ctrl`:`:GetViewChildIndex`(const Upp`:`:Ctrl`*`)const:%- [@(0.0.255) int]_[* G 1002etViewChildIndex]([@(0.0.255) const]_[_^Upp`:`:Ctrl^ Ctrl]_`*[*@3 child])_[@(0.0.255) con 1003st]&] 1004[s2; Returns the index of view [%-*@3 child] (first child has index 10050, second child 1 etc...). If [%-*@3 child] is not present in this 1006Ctrl or is in frame, returns `-1. Note that this function performs 1007sequential scan of child (results in O(n) complexity). This is 1008similar to GetChildIndex, but frame widgets are ignored.&] 1009[s3; &] 1010[s4;%- &] 1011[s5;:Upp`:`:Ctrl`:`:GetViewChildCount`(`)const:%- [@(0.0.255) int]_[* GetViewChildCount]( 1012)_[@(0.0.255) const]&] 1013[s2; Returns the number of child ctrls. Note that this function performs 1014sequential scan of child (results in O(n) complexity). This is 1015similar to GetChildCount, but frame widgets are ignored.&] 1016[s3;%- &] 1017[s4;%- &] 1018[s5;:Upp`:`:Ctrl`:`:GetViewIndexChild`(int`)const:%- [_^Upp`:`:Ctrl^ Ctrl]_`*[* GetViewIn 1019dexChild]([@(0.0.255) int]_[*@3 ii])_[@(0.0.255) const]&] 1020[s2; Retruns view child at index [%-*@3 i] or NULL if there is none. 1021Note that this function performs sequential scan of child (results 1022in O(n) complexity). This is similar to GetIndexChild, but frame 1023widgets are ignored.&] 1024[s3; &] 1025[s4;%- &] 1026[s5;:Ctrl`:`:IsChild`(`)const:%- [@(0.0.255) bool]_[* IsChild]()_[@(0.0.255) const]&] 1027[s7;i1120;a17; [*/ Return value]-|True if Ctrl has parent.&] 1028[s3;%- &] 1029[s4;%- &] 1030[s5;:Ctrl`:`:ChildFromPoint`(Point`&`)const:%- [_^`:`:Ctrl^ Ctrl]_`*[* ChildFromPoint]([_^`:`:Point^ P 1031oint][@(0.0.255) `&]_[*@3 pt])_[@(0.0.255) const]&] 1032[s2;b17;a17; Checks whether opened top`-level Ctrl is foreground.&] 1033[s7;i1120;a17; [*/ Return value]-|True if Ctrl is foreground.&] 1034[s3;%- &] 1035[s4;%- &] 1036[s5;:Ctrl`:`:IsForeground`(`)const:%- [@(0.0.255) bool]_[* IsForeground]()_[@(0.0.255) cons 1037t]&] 1038[s2; Returns true if Ctrl or its top`-level parent is foreground 1039window.&] 1040[s3;%- &] 1041[s4;%- &] 1042[s5;:Ctrl`:`:SetForeground`(`):%- [@(0.0.255) void]_[* SetForeground]()&] 1043[s2;b17;a17; Asks platform to put top`-level Ctrl to foreground.&] 1044[s3; &] 1045[s4;%- &] 1046[s5;:Ctrl`:`:GetTopCtrl`(`)const:%- [@(0.0.255) const]_[_^Ctrl^ Ctrl]_`*[* GetTopCtrl]()_[@(0.0.255) c 1047onst]&] 1048[s2; Gets the top`-level Ctrl, that is Ctrl that has this Ctrl in 1049child tree and has no parent.&] 1050[s7;i1120;a17; [*/ Return value]-|Pointer to top`-level Ctrl. Can return 1051this.&] 1052[s3;%- &] 1053[s4;%- &] 1054[s5;:Ctrl`:`:GetTopCtrl`(`):%- [_^Ctrl^ Ctrl]_`*[* GetTopCtrl]()&] 1055[s2; Gets the top`-level Ctrl, that is Ctrl that has this Ctrl in 1056child tree and has no parent.&] 1057[s7;i1120;a17; [*/ Return value]-|Pointer to top`-level Ctrl. Can return 1058this.&] 1059[s3; &] 1060[s4;%- &] 1061[s5;:Ctrl`:`:GetOwner`(`)const:%- [@(0.0.255) const]_[_^Ctrl^ Ctrl]_`*[* GetOwner]()_[@(0.0.255) c 1062onst]&] 1063[s2; Returns owner of top`-level Ctrl. Example of owned window is 1064dialog launched from main application window. Owner is another 1065top`-level Ctrl.&] 1066[s7;i1120;a17; [*/ Return value]-|Pointer to owner top`-level Ctrl or 1067NULL is window is not owned.&] 1068[s3;%- &] 1069[s4;%- &] 1070[s5;:Ctrl`:`:GetOwner`(`):%- [_^`:`:Ctrl^ Ctrl]_`*[* GetOwner]()&] 1071[s2;b17;a17; Returns owner of top`-level Ctrl.&] 1072[s7;i1120;a17; [*/ Return value]-|Pointer to owner top`-level Ctrl or 1073NULL is window is not owned.&] 1074[s3; &] 1075[s4;%- &] 1076[s5;:Ctrl`:`:GetTopCtrlOwner`(`)const:%- [@(0.0.255) const]_[_^Ctrl^ Ctrl]_`*[* GetTopCtrlO 1077wner]()_[@(0.0.255) const]&] 1078[s2; Equivalent to GetTopCtrl()`->GetOwner() call.&] 1079[s7;i1120;a17; [*/ Return value]-|Pointer to owner of top`-level Ctrl.&] 1080[s3;%- &] 1081[s4;%- &] 1082[s5;:Ctrl`:`:GetTopCtrlOwner`(`):%- [_^`:`:Ctrl^ Ctrl]_`*[* GetTopCtrlOwner]()&] 1083[s2;b17;a17; Equivalent to GetTopCtrl()`->GetOwner() call.&] 1084[s7;i1120;a17; [*/ Return value]-|Pointer to owner of top`-level Ctrl.&] 1085[s3;%- &] 1086[s4;%- &] 1087[s5;:Ctrl`:`:GetOwnerCtrl`(`):%- [_^`:`:Ctrl^ Ctrl]_`*[* GetOwnerCtrl]()&] 1088[s5;K:Ctrl`:`:GetOwnerCtrl`(`)const:%- [*@(0.0.255) const][*@(64) _][*^`:`:Ctrl^@(64) Ctrl][*@(64) _ 1089`*][* GetOwnerCtrl][*@(64) ()_][*@(0.0.255) const]&] 1090[s2;b17;a17; Returns the owner Ctrl. Unlike GetOwner, it returns 1091actual widget that was used as `"owner`" parameter in Open or 1092PopUp calls.&] 1093[s3; &] 1094[s4;%- &] 1095[s5;:Ctrl`:`:GetTopWindow`(`)const:%- [@(0.0.255) const]_[_^TopWindow^ TopWindow]_`*[* GetT 1096opWindow]()_[@(0.0.255) const]&] 1097[s2; TopWindow that contains this Ctrl.&] 1098[s7;i1120;a17; [*/ Return value]-|Pointer to TopWindow.&] 1099[s3;%- &] 1100[s4;%- &] 1101[s5;:Ctrl`:`:GetTopWindow`(`):%- [_^`:`:TopWindow^ TopWindow]_`*[* GetTopWindow]()&] 1102[s2;b17;a17; TopWindow that contains this Ctrl.&] 1103[s7;i1120;a17; [*/ Return value]-|Pointer to TopWindow.&] 1104[s3; &] 1105[s4;%- &] 1106[s5;:Ctrl`:`:GetMainWindow`(`)const:%- [@(0.0.255) const]_[_^TopWindow^ TopWindow]_`*[* Get 1107MainWindow]()_[@(0.0.255) const]&] 1108[s2; Returns main window (one with no owner) that directly or indirectly 1109owns this Ctrl.&] 1110[s7;i1120;a17; [*/ Return value]-|Pointer to main window.&] 1111[s3;%- &] 1112[s4;%- &] 1113[s5;:Ctrl`:`:GetMainWindow`(`):%- [_^`:`:TopWindow^ TopWindow]_`*[* GetMainWindow]()&] 1114[s2;b17;a17; Returns main window (one with no owner) that directly 1115or indirectly owns this Ctrl.&] 1116[s7;i1120;a17; [*/ Return value]-|Pointer to main window.&] 1117[s3;%- &] 1118[s4;%- &] 1119[s5;:Ctrl`:`:SetFrame`(int`,CtrlFrame`&`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* SetFrame]( 1120[@(0.0.255) int]_[*@3 i], [_^`:`:CtrlFrame^ CtrlFrame][@(0.0.255) `&]_[*@3 frm])&] 1121[s2;b17;a17; Sets Frame at given position. If there is no such position 1122yet, required number of NullFrame frames is added. Only reference 1123to frame is stored, that means that frame must exists during 1124the time it is used in Ctrl. Also, some frames can also be used 1125for multiple Ctrls.&] 1126[s7;i1120;a17; [%-*C@3 i]-|Position. First frame with i `=`= 0 is outermost.&] 1127[s7;i1120;a17; [%-*C@3 frm]-|Reference to frame.&] 1128[s7;i1120;a17; [*/ Return value]-|Returns `*this to allow chaining of 1129method calls.&] 1130[s3;%- &] 1131[s4;%- &] 1132[s5;:Ctrl`:`:SetFrame`(CtrlFrame`&`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* SetFrame]([_^`:`:CtrlFrame^ C 1133trlFrame][@(0.0.255) `&]_[*@3 frm])&] 1134[s2;b17;a17; Sets frame at position 0.&] 1135[s7;i1120;a17; [%-*C@3 frm]-|Reference to frame.&] 1136[s7;i1120;a17; [*/ Return value]-|`*this.&] 1137[s3;%- &] 1138[s4;%- &] 1139[s5;:Ctrl`:`:AddFrame`(CtrlFrame`&`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* AddFrame]([_^`:`:CtrlFrame^ C 1140trlFrame][@(0.0.255) `&]_[*@3 frm])&] 1141[s2;b17;a17; Adds frame at inner`-most position.&] 1142[s7;i1120;a17; [%-*C@3 frm]-|Reference to frame.&] 1143[s7;i1120;a17; [*/ Return value]-|`*this.&] 1144[s3;%- &] 1145[s4;%- &] 1146[s5;:Ctrl`:`:GetFrame`(int`)const:%- [@(0.0.255) const]_[_^`:`:CtrlFrame^ CtrlFrame][@(0.0.255) `& 1147]_[* GetFrame]([@(0.0.255) int]_[*@3 i]_`=_[@3 0])_[@(0.0.255) const]&] 1148[s2;b17;a17; Returns reference to frame at given position.&] 1149[s7;i1120;a17; [%-*C@3 i]-|Position.&] 1150[s7;i1120;a17; [*/ Return value]-|Reference to frame.&] 1151[s3; &] 1152[s4;%- &] 1153[s5;:Ctrl`:`:GetFrame`(int`):%- [_^CtrlFrame^ CtrlFrame][@(0.0.255) `&]_[* GetFrame]([@(0.0.255) i 1154nt]_[*@3 i]_`=_[@3 0])&] 1155[s2; Returns reference to frame at given position.&] 1156[s7;i1120;a17; [%-*C@3 i]-|Position.&] 1157[s7;i1120;a17; [*/ Return value]-|Reference to frame.&] 1158[s3;%- &] 1159[s4;%- &] 1160[s5;:Ctrl`:`:RemoveFrame`(int`):%- [@(0.0.255) void]_[* RemoveFrame]([@(0.0.255) int]_[*@3 i]) 1161&] 1162[s2; Removes frame at given position.&] 1163[s7;i1120;a17; [%-*C@3 i]-|Index of frame.&] 1164[s3;%- &] 1165[s4;%- &] 1166[s5;:Ctrl`:`:RemoveFrame`(CtrlFrame`&`):%- [@(0.0.255) void]_[* RemoveFrame]([_^`:`:CtrlFrame^ C 1167trlFrame][@(0.0.255) `&]_[*@3 frm])&] 1168[s2;b17;a17; Removes first frame equal to [@3 frm]. Equality means 1169here that pointers to both frames are the same (it is same instance).&] 1170[s7;i1120;a17; [%-*C@3 frm]-|Frame to remove.&] 1171[s3;%- &] 1172[s4;%- &] 1173[s5;:Ctrl`:`:InsertFrame`(int`,CtrlFrame`&`):%- [@(0.0.255) void]_[* InsertFrame]([@(0.0.255) i 1174nt]_[*@3 i], [_^`:`:CtrlFrame^ CtrlFrame][@(0.0.255) `&]_[*@3 frm])&] 1175[s2;b17;a17; Inserts frame at given position.&] 1176[s7;i1120;a17; [%-*C@3 i]-|Position.&] 1177[s7;i1120;a17; [%-*C@3 frm]-|Reference to frame.&] 1178[s3;%- &] 1179[s4;%- &] 1180[s5;:Ctrl`:`:FindFrame`(CtrlFrame`&`):%- [@(0.0.255) int]_[* FindFrame]([_^`:`:CtrlFrame^ C 1181trlFrame][@(0.0.255) `&]_[*@3 frm])&] 1182[s2;b17;a17; Finds first frame equal to [@3 frm]. Equality means here 1183that pointers to both frames are the same (it is same instance).&] 1184[s7;i1120;a17; [%-*C@3 frm]-|Frame to find.&] 1185[s7;i1120;a17; [*/ Return value]-|Index of frame or negative value if 1186frame is not found.&] 1187[s3;%- &] 1188[s4;%- &] 1189[s5;:Ctrl`:`:GetFrameCount`(`)const:%- [@(0.0.255) int]_[* GetFrameCount]()_[@(0.0.255) con 1190st]&] 1191[s2;b17;a17; Returns count of frames in Ctrl.&] 1192[s7;i1120;a17; [*/ Return value]-|Count of frames.&] 1193[s3;%- &] 1194[s4;%- &] 1195[s5;:Ctrl`:`:ClearFrames`(`):%- [@(0.0.255) void]_[* ClearFrames]()&] 1196[s2;b17;a17; Removes all frames from Ctrl. Frame at position 0 then 1197added and set to NullFrame.&] 1198[s3;%- &] 1199[s4;%- &] 1200[s5;:Ctrl`:`:IsOpen`(`)const:%- [@(0.0.255) bool]_[* IsOpen]()_[@(0.0.255) const]&] 1201[s2;b17;a17; Checks whether top`-level Ctrl of this Ctrl is open.&] 1202[s7;i1120;a17; [*/ Return value]-|true if open.&] 1203[s3;%- &] 1204[s4;%- &] 1205[s5;:Ctrl`:`:Shutdown`(`):%- [@(0.0.255) void]_[* Shutdown]()&] 1206[s2;b17;a17; Sets internal flag indicating that Ctrl is being destructed. 1207This is rarely used to solve some destruction order problems.&] 1208[s3;%- &] 1209[s4;%- &] 1210[s5;:Ctrl`:`:IsShutdown`(`)const:%- [@(0.0.255) bool]_[* IsShutdown]()_[@(0.0.255) const]&] 1211[s2;b17;a17; Checks whether internal shutdown flag is set.&] 1212[s7;i1120;a17; [*/ Return value]-|True if in shutdown mode.&] 1213[s3;%- &] 1214[s4;%- &] 1215[s5;:Ctrl`:`:SetPos`(Ctrl`:`:LogPos`,bool`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* SetPos]( 1216[_^`:`:Ctrl`:`:LogPos^ LogPos]_[*@3 p], [@(0.0.255) bool]_[*@3 inframe])&] 1217[s2;b17;a17; Sets [^topic`:`/`/CtrlCore`/src`/LogPos`$en`-us^ logical 1218position] of Ctrl. If Ctrl is top`-level, logical position must 1219be of left`-top type.&] 1220[s7;i1120;a17; [%-*C@3 p]-|Logical position.&] 1221[s7;i1120;a17; [%-*C@3 inframe]-|If true, Ctrl is placed into [^topic`:`/`/CtrlCore`/src`/AboutFrames`$en`-us^ f 1222rame area] instead of view area&] 1223[s7;i1120;a17; [*/ Return value]-|`*this.&] 1224[s3;%- &] 1225[s4;%- &] 1226[s5;:Ctrl`:`:SetPos`(Ctrl`:`:LogPos`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* SetPos]([_^`:`:Ctrl`:`:LogPos^ L 1227ogPos]_[*@3 p])&] 1228[s2;b17;a17; Sets logical position of Ctrl in view area.&] 1229[s7;i1120;a17; [%-*C@3 p]-|Logical position.&] 1230[s7;i1120;a17; [*/ Return value]-|`*this.&] 1231[s3;%- &] 1232[s4;%- &] 1233[s5;:Ctrl`:`:SetPos`(Ctrl`:`:Logc`,Ctrl`:`:Logc`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* S 1234etPos]([_^`:`:Ctrl`:`:Logc^ Logc]_[*@3 x], [_^`:`:Ctrl`:`:Logc^ Logc]_[*@3 y])&] 1235[s2;b17;a17; Sets logical position by individual coordinates (in 1236view area).&] 1237[s7;i1120;a17; [%-*C@3 x]-|Horizontal logical position.&] 1238[s7;i1120;a17; [%-*C@3 y]-|Vertical logical postion.&] 1239[s7;i1120;a17; [*/ Return value]-|`*this.&] 1240[s3;%- &] 1241[s4;%- &] 1242[s5;:Ctrl`:`:SetPosX`(Ctrl`:`:Logc`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* SetPosX]([_^`:`:Ctrl`:`:Logc^ L 1243ogc]_[*@3 x])&] 1244[s2;b17;a17; Sets horizontal logical position only (in view area).&] 1245[s7;i1120;a17; [%-*C@3 x]-|Horizontal logical position.&] 1246[s7;i1120;a17; [*/ Return value]-|`*this.&] 1247[s3;%- &] 1248[s4;%- &] 1249[s5;:Ctrl`:`:SetPosY`(Ctrl`:`:Logc`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* SetPosY]([_^`:`:Ctrl`:`:Logc^ L 1250ogc]_[*@3 y])&] 1251[s2;b17;a17; Sets vertical logical position only (in view area).&] 1252[s7;i1120;a17; [%-*C@3 y]-|Vertical logical position.&] 1253[s7;i1120;a17; [*/ Return value]-|`*this.&] 1254[s3;%- &] 1255[s4;%- &] 1256[s5;:Ctrl`:`:SetRect`(const Rect`&`):%- [@(0.0.255) void]_[* SetRect]([@(0.0.255) const]_[_^`:`:Rect^ R 1257ect][@(0.0.255) `&]_[*@3 r])&] 1258[s2;b17;a17; Sets left`-top logical position (in view area).&] 1259[s7;i1120;a17; [%-*C@3 r]-|Rectangle determines left`-top position.&] 1260[s3;%- &] 1261[s4;%- &] 1262[s5;:Ctrl`:`:SetRect`(int`,int`,int`,int`):%- [@(0.0.255) void]_[* SetRect]([@(0.0.255) int 1263]_[*@3 x], [@(0.0.255) int]_[*@3 y], [@(0.0.255) int]_[*@3 cx], [@(0.0.255) int]_[*@3 cy])&] 1264[s2;b17;a17; Sets left`-top logical position (in view area).&] 1265[s7;i1120;a17; [%-*C@3 x]-|Distance between parent rectangle left`-edge 1266and Ctrl.&] 1267[s7;i1120;a17; [%-*C@3 y]-|Distance between parent rectangle top`-edge 1268and Ctrl.&] 1269[s7;i1120;a17; [%-*C@3 cx]-|Horizontal size.&] 1270[s7;i1120;a17; [%-*C@3 cy]-|Vertical size.&] 1271[s3;%- &] 1272[s4;%- &] 1273[s5;:Ctrl`:`:SetRectX`(int`,int`):%- [@(0.0.255) void]_[* SetRectX]([@(0.0.255) int]_[*@3 x], 1274 [@(0.0.255) int]_[*@3 cx])&] 1275[s2;b17;a17; Sets left horizontal logical position (in view area).&] 1276[s7;i1120;a17; [%-*C@3 x]-|Distance between parent rectangle left`-edge 1277and Ctrl.&] 1278[s7;i1120;a17; [%-*C@3 cx]-|Horizontal size.&] 1279[s3;%- &] 1280[s4;%- &] 1281[s5;:Ctrl`:`:SetRectY`(int`,int`):%- [@(0.0.255) void]_[* SetRectY]([@(0.0.255) int]_[*@3 y], 1282 [@(0.0.255) int]_[*@3 cy])&] 1283[s2;b17;a17; Sets top vertical logical position (in view area).&] 1284[s7;i1120;a17; [%-*C@3 y]-|Distance between parent rectangle top`-edge 1285and Ctrl.&] 1286[s7;i1120;a17; [%-*C@3 cy]-|Vertical size.&] 1287[s3;%- &] 1288[s4;%- &] 1289[s5;:Ctrl`:`:SetFramePos`(Ctrl`:`:LogPos`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* SetFrame 1290Pos]([_^`:`:Ctrl`:`:LogPos^ LogPos]_[*@3 p])&] 1291[s2;b17;a17; Sets logical position of Ctrl in frame area.&] 1292[s7;i1120;a17; [%-*C@3 p]-|Logical position.&] 1293[s7;i1120;a17; [*/ Return value]-|`*this.&] 1294[s3;%- &] 1295[s4;%- &] 1296[s5;:Ctrl`:`:SetFramePos`(Ctrl`:`:Logc`,Ctrl`:`:Logc`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `& 1297]_[* SetFramePos]([_^`:`:Ctrl`:`:Logc^ Logc]_[*@3 x], [_^`:`:Ctrl`:`:Logc^ Logc]_[*@3 y])&] 1298[s2;b17;a17; Sets logical position by individual coordinates (in 1299frame area).&] 1300[s7;i1120;a17; [%-*C@3 x]-|Horizontal logical position.&] 1301[s7;i1120;a17; [%-*C@3 y]-|Vertical logical postion.&] 1302[s7;i1120;a17; [*/ Return value]-|`*this.&] 1303[s3;%- &] 1304[s4;%- &] 1305[s5;:Ctrl`:`:SetFramePosX`(Ctrl`:`:Logc`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* SetFrameP 1306osX]([_^`:`:Ctrl`:`:Logc^ Logc]_[*@3 x])&] 1307[s2;b17;a17; Sets horizontal logical position only (in frame area).&] 1308[s7;i1120;a17; [%-*C@3 x]-|Horizontal logical position.&] 1309[s7;i1120;a17; [*/ Return value]-|`*this.&] 1310[s3;%- &] 1311[s4;%- &] 1312[s5;:Ctrl`:`:SetFramePosY`(Ctrl`:`:Logc`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* SetFrameP 1313osY]([_^`:`:Ctrl`:`:Logc^ Logc]_[*@3 y])&] 1314[s2;b17;a17; Sets vertical logical position only (in frame area).&] 1315[s7;i1120;a17; [%-*C@3 y]-|Vertical logical position.&] 1316[s7;i1120;a17; [*/ Return value]-|`*this.&] 1317[s3;%- &] 1318[s4;%- &] 1319[s5;:Ctrl`:`:SetFrameRect`(const Rect`&`):%- [@(0.0.255) void]_[* SetFrameRect]([@(0.0.255) c 1320onst]_[_^`:`:Rect^ Rect][@(0.0.255) `&]_[*@3 r])&] 1321[s2;b17;a17; Sets left`-top logical position (in frame area).&] 1322[s7;i1120;a17; [%-*C@3 r]-|Rectangle determines left`-top position.&] 1323[s3;%- &] 1324[s4;%- &] 1325[s5;:Ctrl`:`:SetFrameRect`(int`,int`,int`,int`):%- [@(0.0.255) void]_[* SetFrameRect]([@(0.0.255) i 1326nt]_[*@3 x], [@(0.0.255) int]_[*@3 y], [@(0.0.255) int]_[*@3 cx], [@(0.0.255) int]_[*@3 cy])&] 1327[s2;b17;a17; Sets left`-top logical position (in frame area).&] 1328[s7;i1120;a17; [%-*C@3 x]-|Distance between parent rectangle left`-edge 1329and Ctrl.&] 1330[s7;i1120;a17; [%-*C@3 y]-|Distance between parent rectangle top`-edge 1331and Ctrl.&] 1332[s7;i1120;a17; [%-*C@3 cx]-|Horizontal size.&] 1333[s7;i1120;a17; [%-*C@3 cy]-|Vertical size.&] 1334[s3;%- &] 1335[s4;%- &] 1336[s5;:Ctrl`:`:SetFrameRectX`(int`,int`):%- [@(0.0.255) void]_[* SetFrameRectX]([@(0.0.255) i 1337nt]_[*@3 x], [@(0.0.255) int]_[*@3 cx])&] 1338[s2;b17;a17; Sets left horizontal logical position (in frame area).&] 1339[s7;i1120;a17; [%-*C@3 x]-|Distance between parent rectangle left`-edge 1340and Ctrl.&] 1341[s7;i1120;a17; [%-*C@3 cx]-|Horizontal size.&] 1342[s3;%- &] 1343[s4;%- &] 1344[s5;:Ctrl`:`:SetFrameRectY`(int`,int`):%- [@(0.0.255) void]_[* SetFrameRectY]([@(0.0.255) i 1345nt]_[*@3 y], [@(0.0.255) int]_[*@3 cy])&] 1346[s2;b17;a17; Sets top vertical logical position (in frame area).&] 1347[s7;i1120;a17; [%-*C@3 y]-|Distance between parent rectangle top`-edge 1348and Ctrl.&] 1349[s7;i1120;a17; [%-*C@3 cy]-|Vertical size.&] 1350[s3;%- &] 1351[s4;%- &] 1352[s5;:Ctrl`:`:InFrame`(`)const:%- [@(0.0.255) bool]_[* InFrame]()_[@(0.0.255) const]&] 1353[s7;i1120;a17; [*/ Return value]-|true when Ctrl has position in frame 1354area.&] 1355[s3;%- &] 1356[s4;%- &] 1357[s5;:Ctrl`:`:InView`(`)const:%- [@(0.0.255) bool]_[* InView]()_[@(0.0.255) const]&] 1358[s7;i1120;a17; [*/ Return value]-|true when Ctrl has position in view 1359area.&] 1360[s3;%- &] 1361[s4;%- &] 1362[s5;:Ctrl`:`:GetPos`(`)const:%- [_^`:`:Ctrl`:`:LogPos^ LogPos]_[* GetPos]()_[@(0.0.255) con 1363st]&] 1364[s7;i1120;a17; [*/ Return value]-|Logical position of Ctrl&] 1365[s3;%- &] 1366[s4;%- &] 1367[s5;:Ctrl`:`:RefreshLayout`(`):%- [@(0.0.255) void]_[* RefreshLayout]()&] 1368[s2;b17;a17; Recomputes layout for Ctrl. This includes calling FrameLayout 1369for all frames and calling Layout virtual method. Layout of child 1370widgets is recomputed if their size changes.&] 1371[s3;%- &] 1372[s4;%- &] 1373[s5;:Ctrl`:`:RefreshLayoutDeep`(`):%- [@(0.0.255) void]_[* RefreshLayoutDeep]()&] 1374[s2; Recomputes layout for the whole Ctrl tree `- unlike RefreshLayout, 1375recomputes layout of all descendants regardless whether their 1376size has changed.&] 1377[s3;%- &] 1378[s4;%- &] 1379[s5;:Ctrl`:`:RefreshParentLayout`(`):%- [@(0.0.255) void]_[* RefreshParentLayout]()&] 1380[s2;b17;a17; If Ctrl has parent, calls parent`->RefreshLayout().&] 1381[s3;%- &] 1382[s4;%- &] 1383[s5;:Ctrl`:`:UpdateLayout`(`):%- [@(0.0.255) void]_[* UpdateLayout]()&] 1384[s2; Recomputes layout of widget by recalculating its frame coverage, 1385then, if view size has changed, calls Layout method (this is 1386the difference from RefreshLayout, which calls Layout always). 1387Layout of child widgets is recomputed if their size changes.&] 1388[s3;%- &] 1389[s4;%- &] 1390[s5;:Ctrl`:`:UpdateParentLayout`(`):%- [@(0.0.255) void]_[* UpdateParentLayout]()&] 1391[s2; Calls UpdateLayout for parent (if exists).&] 1392[s3;%- &] 1393[s4;%- &] 1394[s5;:Ctrl`:`:LeftPos`(int`,int`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* LeftPos]([@(0.0.255) i 1395nt]_[*@3 a], [@(0.0.255) int]_[*@3 size]_`=_STDSIZE)&] 1396[s2;b17;a17; Sets left horizontal position (in view area).&] 1397[s7;i1120;a17; [%-*C@3 a]-|Distance from left border of parent.&] 1398[s7;i1120;a17; [%-*C@3 size]-|Horizontal size.&] 1399[s7;i1120;a17; [*/ Return value]-|`*this for method chaining.&] 1400[s3;%- &] 1401[s4;%- &] 1402[s5;:Ctrl`:`:RightPos`(int`,int`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* RightPos]([@(0.0.255) i 1403nt]_[*@3 a], [@(0.0.255) int]_[*@3 size]_`=_STDSIZE)&] 1404[s2;b17;a17; Sets right horizontal position (in view area).&] 1405[s7;i1120;a17; [%-*C@3 a]-|Distance from the right border of parent.&] 1406[s7;i1120;a17; [%-*C@3 size]-|Horizontal size.&] 1407[s7;i1120;a17; [*/ Return value]-|`*this for method chaining.&] 1408[s3;%- &] 1409[s4;%- &] 1410[s5;:Ctrl`:`:TopPos`(int`,int`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* TopPos]([@(0.0.255) i 1411nt]_[*@3 a], [@(0.0.255) int]_[*@3 size]_`=_STDSIZE)&] 1412[s2;b17;a17; Sets top vertical position (in view area).&] 1413[s7;i1120;a17; [%-*C@3 a]-|Distance from the top border of parent.&] 1414[s7;i1120;a17; [%-*C@3 size]-|Vertical size.&] 1415[s7;i1120;a17; [*/ Return value]-|`*this for method chaining.&] 1416[s3;%- &] 1417[s4;%- &] 1418[s5;:Ctrl`:`:BottomPos`(int`,int`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* BottomPos]([@(0.0.255) i 1419nt]_[*@3 a], [@(0.0.255) int]_[*@3 size]_`=_STDSIZE)&] 1420[s2;b17;a17; Sets bottom vertical position (in view area).&] 1421[s7;i1120;a17; [%-*C@3 a]-|Distance from the bottom border of parent.&] 1422[s7;i1120;a17; [%-*C@3 size]-|Vertical size.&] 1423[s7;i1120;a17; [*/ Return value]-|`*this for method chaining.&] 1424[s3;%- &] 1425[s4;%- &] 1426[s5;:Ctrl`:`:HSizePos`(int`,int`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* HSizePos]([@(0.0.255) i 1427nt]_[*@3 a]_`=_[@3 0], [@(0.0.255) int]_[*@3 b]_`=_[@3 0])&] 1428[s2;b17;a17; Sets horizontal sizing position (in view area).&] 1429[s7;i1120;a17; [%-*C@3 a]-|Distance from left border of parent.&] 1430[s7;i1120;a17; [%-*C@3 b]-|Distance from right border of parent.&] 1431[s7;i1120;a17; [*/ Return value]-|`*this for method chaining.&] 1432[s3;%- &] 1433[s4;%- &] 1434[s5;:Ctrl`:`:VSizePos`(int`,int`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* VSizePos]([@(0.0.255) i 1435nt]_[*@3 a]_`=_[@3 0], [@(0.0.255) int]_[*@3 b]_`=_[@3 0])&] 1436[s2;b17;a17; Sets vertical sizing position (in view area).&] 1437[s7;i1120;a17; [%-*C@3 a]-|Distance form top border of parent.&] 1438[s7;i1120;a17; [%-*C@3 b]-|Distance from bottom border of parent.&] 1439[s7;i1120;a17; [*/ Return value]-|`*this for method chaining.&] 1440[s3;%- &] 1441[s4;%- &] 1442[s5;:Ctrl`:`:SizePos`(`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* SizePos]()&] 1443[s2;b17;a17; Same as VSizePos().HSizePos().&] 1444[s7;i1120;a17; [*/ Return value]-|`*this for method chaining.&] 1445[s3;%- &] 1446[s4;%- &] 1447[s5;:Ctrl`:`:HCenterPos`(int`,int`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* HCenterPos]([@(0.0.255) i 1448nt]_[*@3 size]_`=_STDSIZE, [@(0.0.255) int]_[*@3 delta]_`=_[@3 0])&] 1449[s2;b17;a17; Horizontal centered position (in view area).&] 1450[s7;i1120;a17; [%-*C@3 size]-|Horizontal size.&] 1451[s7;i1120;a17; [%-*C@3 delta]-|Offset from centered position (rarely 1452used).&] 1453[s7;i1120;a17; [*/ Return value]-|`*this for method chaining.&] 1454[s3;%- &] 1455[s4;%- &] 1456[s5;:Ctrl`:`:VCenterPos`(int`,int`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* VCenterPos]([@(0.0.255) i 1457nt]_[*@3 size]_`=_STDSIZE, [@(0.0.255) int]_[*@3 delta]_`=_[@3 0])&] 1458[s2;b17;a17; Vertical centered position (in view area).&] 1459[s7;i1120;a17; [%-*C@3 size]-|Vertical size.&] 1460[s7;i1120;a17; [%-*C@3 delta]-|Offset from centered position (rarely 1461used).&] 1462[s7;i1120;a17; [*/ Return value]-|`*this for method chaining.&] 1463[s3;%- &] 1464[s4;%- &] 1465[s5;:Ctrl`:`:LeftPosZ`(int`,int`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* LeftPosZ]([@(0.0.255) i 1466nt]_[*@3 a], [@(0.0.255) int]_[*@3 size]_`=_STDSIZE)&] 1467[s2;b17;a17; Sets left horizontal [/ zoomed ]position (in view area). 1468Distances are recalculated using zoom factor to accommodate size 1469differences between standard font used during layout design and 1470actual standard font.&] 1471[s7;i1120;a17; [%-*C@3 a]-|Distance from the left border of parent.&] 1472[s7;i1120;a17; [%-*C@3 size]-|Horizontal size.&] 1473[s7;i1120;a17; [*/ Return value]-|`*this for method chaining.&] 1474[s3;%- &] 1475[s4;%- &] 1476[s5;:Ctrl`:`:RightPosZ`(int`,int`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* RightPosZ]([@(0.0.255) i 1477nt]_[*@3 a], [@(0.0.255) int]_[*@3 size]_`=_STDSIZE)&] 1478[s2;b17;a17; Sets right horizontal [/ zoomed ]position (in view area). 1479Distances are recalculated using zoom factor to accommodate size 1480differences between standard font used during layout design and 1481actual standard font.&] 1482[s7;i1120;a17; [%-*C@3 a]-|Distance from the right border of parent.&] 1483[s7;i1120;a17; [%-*C@3 size]-|Horizontal size.&] 1484[s2;b17;a17; [*/ Return value]-|`*this for method chaining.&] 1485[s3;%- &] 1486[s4;%- &] 1487[s5;:Ctrl`:`:TopPosZ`(int`,int`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* TopPosZ]([@(0.0.255) i 1488nt]_[*@3 a], [@(0.0.255) int]_[*@3 size]_`=_STDSIZE)&] 1489[s2;b17;a17; Sets top vertical [/ zoomed ]position (in view area). 1490Distances are recalculated using zoom factor to accommodate size 1491differences between standard font used during layout design and 1492actual standard font.&] 1493[s7;i1120;a17; [%-*C@3 a]-|Distance from the top border of parent.&] 1494[s7;i1120;a17; [%-*C@3 size]-|Vertical size.&] 1495[s7;i1120;a17; [*/ Return value]-|`*this for method chaining.&] 1496[s3;%- &] 1497[s4;%- &] 1498[s5;:Ctrl`:`:BottomPosZ`(int`,int`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* BottomPosZ]([@(0.0.255) i 1499nt]_[*@3 a], [@(0.0.255) int]_[*@3 size]_`=_STDSIZE)&] 1500[s2;b17;a17; Sets bottom vertical [/ zoomed ]position (in view area). 1501Distances are recalculated using zoom factor to accommodate size 1502differences between standard font used during layout design and 1503actual standard font.&] 1504[s7;i1120;a17; [%-*C@3 a]-|Distance from the bottom border of parent.&] 1505[s7;i1120;a17; [%-*C@3 size]-|Vertical size.&] 1506[s7;i1120;a17; [*/ Return value]-|`*this for method chaining.&] 1507[s3;%- &] 1508[s4;%- &] 1509[s5;:Ctrl`:`:HSizePosZ`(int`,int`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* HSizePosZ]([@(0.0.255) i 1510nt]_[*@3 a]_`=_[@3 0], [@(0.0.255) int]_[*@3 b]_`=_[@3 0])&] 1511[s2;b17;a17; Sets vertical [/ zoomed ]sizing position (in view area). 1512Distances are recalculated using zoom factor to accommodate size 1513differences between standard font used during layout design and 1514actual standard font.&] 1515[s7;i1120;a17; [%-*C@3 a]-|Distance form top border of parent.&] 1516[s7;i1120;a17; [%-*C@3 b]-|Distance from bottom border of parent.&] 1517[s7;i1120;a17; [*/ Return value]-|`*this for method chaining.&] 1518[s3;%- &] 1519[s4;%- &] 1520[s5;:Ctrl`:`:VSizePosZ`(int`,int`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* VSizePosZ]([@(0.0.255) i 1521nt]_[*@3 a]_`=_[@3 0], [@(0.0.255) int]_[*@3 b]_`=_[@3 0])&] 1522[s2;b17;a17; Sets vertical [/ zoomed ]sizing position (in view area). 1523Distances are recalculated using zoom factor to accommodate size 1524differences between standard font used during layout design and 1525actual standard font.&] 1526[s7;i1120;a17; [%-*C@3 a]-|Distance form top border of parent.&] 1527[s7;i1120;a17; [%-*C@3 b]-|Distance from bottom border of parent.&] 1528[s7;i1120;a17; [*/ Return value]-|`*this for method chaining.&] 1529[s3;%- &] 1530[s4;%- &] 1531[s5;:Ctrl`:`:HCenterPosZ`(int`,int`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* HCenterPosZ]([@(0.0.255) i 1532nt]_[*@3 size]_`=_STDSIZE, [@(0.0.255) int]_[*@3 delta]_`=_[@3 0])&] 1533[s2;b17;a17; Horizontal centered [/ zoomed ]position (in view area). 1534Distances are recalculated using zoom factor to accommodate size 1535differences between standard font used during layout design and 1536actual standard font.&] 1537[s7;i1120;a17; [%-*C@3 size]-|Horizontal size.&] 1538[s7;i1120;a17; [%-*C@3 delta]-|Offset from centered position (rarely 1539used).&] 1540[s7;i1120;a17; [*/ Return value]-|`*this for method chaining.&] 1541[s3;%- &] 1542[s4;%- &] 1543[s5;:Ctrl`:`:VCenterPosZ`(int`,int`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* VCenterPosZ]([@(0.0.255) i 1544nt]_[*@3 size]_`=_STDSIZE, [@(0.0.255) int]_[*@3 delta]_`=_[@3 0])&] 1545[s2;b17;a17; Vertical centered [/ zoomed] position (in view area). 1546Distances are recalculated using zoom factor to accommodate size 1547differences between standard font used during layout design and 1548actual standard font.&] 1549[s7;i1120;a17; [%-*C@3 size]-|Vertical size.&] 1550[s7;i1120;a17; [%-*C@3 delta]-|Offset from centered position (rarely 1551used).&] 1552[s7;i1120;a17; [*/ Return value]-|`*this for method chaining.&] 1553[s3;%- &] 1554[s4;%- &] 1555[s5;:Ctrl`:`:GetRect`(`)const:%- [_^`:`:Rect^ Rect]_[* GetRect]()_[@(0.0.255) const]&] 1556[s7;i1120;a17; [*/ Return value]-|Returns current position in parent. 1557It is either position in view or frame coordinates.&] 1558[s3;%- &] 1559[s4;%- &] 1560[s5;:Ctrl`:`:GetScreenRect`(`)const:%- [_^`:`:Rect^ Rect]_[* GetScreenRect]()_[@(0.0.255) c 1561onst]&] 1562[s7;i1120;a17; [*/ Return value]-|Returns current position in absolute 1563screen coordinates.&] 1564[s3;%- &] 1565[s4;%- &] 1566[s5;:Ctrl`:`:GetView`(`)const:%- [_^`:`:Rect^ Rect]_[* GetView]()_[@(0.0.255) const]&] 1567[s7;i1120;a17; [*/ Return value]-|Returns position of view rectangle 1568in frame coordinates.&] 1569[s3;%- &] 1570[s4;%- &] 1571[s5;:Ctrl`:`:GetScreenView`(`)const:%- [_^`:`:Rect^ Rect]_[* GetScreenView]()_[@(0.0.255) c 1572onst]&] 1573[s7;i1120;a17; [*/ Return value]-|Returns position of view rectangle 1574in absolute screen coordinates.&] 1575[s3;%- &] 1576[s4;%- &] 1577[s5;:Ctrl`:`:GetSize`(`)const:%- [_^`:`:Size^ Size]_[* GetSize]()_[@(0.0.255) const]&] 1578[s7;i1120;a17; [*/ Return value]-|Returns size of view rectangle of 1579Ctrl.&] 1580[s3;%- &] 1581[s4;%- &] 1582[s5;:Ctrl`:`:GetVisibleScreenRect`(`)const:%- [_^`:`:Rect^ Rect]_[* GetVisibleScreenRect]( 1583)_[@(0.0.255) const]&] 1584[s7;i1120;a17; [*/ Return value]-|Returns current position in parent 1585intersected with either parent`'s visible screen rectangle for 1586frame Ctrl (as obtained using GetVisibleScreenRect) or parent`'s 1587screen view rectangle for view Ctrl (obtained using GetVisibleScreenView). 1588This method is useful when rectangle of Ctrl exceeds it`'s parent 1589area `- in this case this method returns part of Ctrl that is 1590not clipped out by parent`'s are limits.&] 1591[s3;%- &] 1592[s4;%- &] 1593[s5;:Ctrl`:`:GetVisibleScreenView`(`)const:%- [_^`:`:Rect^ Rect]_[* GetVisibleScreenView]( 1594)_[@(0.0.255) const]&] 1595[s7;i1120;a17; [*/ Return value]-|Returns current position of view area 1596intersected with either parent`'s visible screen rectangle for 1597frame Ctrl (as obtained using GetVisibleScreenRect) or parent`'s 1598screen view rectangle for view Ctrl (obtained using GetVisibleScreenView). 1599This method is useful when rectangle of Ctrl exceeds it`'s parent 1600area `- in this case this method returns part of Ctrl view that 1601is not clipped out by parent`'s are limits.&] 1602[s3;%- &] 1603[s4;%- &] 1604[s5;:Ctrl`:`:GetWorkArea`(`)const:%- [_^Rect^ Rect]_[* GetWorkArea]()_[@(0.0.255) const]&] 1605[s2; Returns the work area (the maximum rectangle that window can 1606use) for screen that this window is in.&] 1607[s3;%- &] 1608[s4;%- &] 1609[s5;:Ctrl`:`:AddFrameSize`(int`,int`)const:%- [_^`:`:Size^ Size]_[* AddFrameSize]([@(0.0.255) i 1610nt]_[*@3 cx], [@(0.0.255) int]_[*@3 cy])_[@(0.0.255) const]&] 1611[s2;b17;a17; Computes size of Ctrl for given size of view and actual 1612set of frames.&] 1613[s7;i1120;a17; [%-*C@3 cx]-|Width.&] 1614[s7;i1120;a17; [%-*C@3 cy]-|Height.&] 1615[s7;i1120;a17; [*/ Return value]-|Size of Ctrl that would have requested 1616view size.&] 1617[s3;%- &] 1618[s4;%- &] 1619[s5;:Ctrl`:`:AddFrameSize`(Size`)const:%- [_^`:`:Size^ Size]_[* AddFrameSize]([_^`:`:Size^ S 1620ize]_[*@3 sz])_[@(0.0.255) const]&] 1621[s2;b17;a17; Same as AddFrameSize(sz.cx, sz.cy).&] 1622[s7;i1120;a17; [%-*C@3 sz]-|Size.&] 1623[s7;i1120;a17; [*/ Return value]-|Size of Ctrl that would have requested 1624view size.&] 1625[s3; &] 1626[s4;%- &] 1627[s5;:Ctrl`:`:Refresh`(const Rect`&`):%- [@(0.0.255) void]_[* Refresh]([@(0.0.255) const]_[_^Rect^ R 1628ect][@(0.0.255) `&]_[*@3 r])&] 1629[s2; Marks requested rectangle of view area for repainting. Actual 1630repaint is deferred for performance reasons.&] 1631[s7;i1120;a17; [%-*C@3 r]-|Rectangle in view.&] 1632[s3;%- &] 1633[s4;%- &] 1634[s5;:Ctrl`:`:Refresh`(int`,int`,int`,int`):%- [@(0.0.255) void]_[* Refresh]([@(0.0.255) int 1635]_[*@3 x], [@(0.0.255) int]_[*@3 y], [@(0.0.255) int]_[*@3 cx], [@(0.0.255) int]_[*@3 cy])&] 1636[s2;b17;a17; Marks requested rectangle of view area for repainting. 1637Actual repaint is deferred for performance reasons.&] 1638[s7;i1120;a17; [%-*C@3 x]-|Left position of rectangle.&] 1639[s7;i1120;a17; [%-*C@3 y]-|Top position of rectangle.&] 1640[s7;i1120;a17; [%-*C@3 cx]-|Width.&] 1641[s7;i1120;a17; [%-*C@3 cy]-|Height.&] 1642[s3;%- &] 1643[s4;%- &] 1644[s5;:Ctrl`:`:Refresh`(`):%- [@(0.0.255) void]_[* Refresh]()&] 1645[s2;b17;a17; Marks whole view area for repainting.&] 1646[s3;%- &] 1647[s4;%- &] 1648[s5;:Ctrl`:`:IsFullRefresh`(`)const:%- [@(0.0.255) bool]_[* IsFullRefresh]()_[@(0.0.255) co 1649nst]&] 1650[s7;i1120;a17; [*/ Return value]-|true when whole view area is marked 1651for repainting but was not repainted yet.&] 1652[s3;%- &] 1653[s4;%- &] 1654[s5;:Ctrl`:`:RefreshFrame`(const Rect`&`):%- [@(0.0.255) void]_[* RefreshFrame]([@(0.0.255) c 1655onst]_[_^`:`:Rect^ Rect][@(0.0.255) `&]_[*@3 r])&] 1656[s2;b17;a17; Marks requested rectangle of frame area for repainting. 1657Actual repainting is deferred for performance reasons.&] 1658[s7;i1120;a17; [%-*C@3 r]-|Area to repaint.&] 1659[s3;%- &] 1660[s4;%- &] 1661[s5;:Ctrl`:`:RefreshFrame`(int`,int`,int`,int`):%- [@(0.0.255) void]_[* RefreshFrame]([@(0.0.255) i 1662nt]_[*@3 x], [@(0.0.255) int]_[*@3 y], [@(0.0.255) int]_[*@3 cx], [@(0.0.255) int]_[*@3 cy])&] 1663[s2;b17;a17; Marks requested rectangle of frame area for repainting. 1664Actual repaint is deferred for performance reasons.&] 1665[s7;i1120;a17; [%-*C@3 x]-|Left position of rectangle.&] 1666[s7;i1120;a17; [%-*C@3 y]-|Top position of rectangle.&] 1667[s7;i1120;a17; [%-*C@3 cx]-|Width.&] 1668[s7;i1120;a17; [%-*C@3 cy]-|Height.&] 1669[s3;%- &] 1670[s4;%- &] 1671[s5;:Ctrl`:`:RefreshFrame`(`):%- [@(0.0.255) void]_[* RefreshFrame]()&] 1672[s2;b17;a17; Marks whole Ctrl area for repainting.&] 1673[s3; &] 1674[s4;%- &] 1675[s5;:Ctrl`:`:ScrollView`(const Rect`&`,int`,int`):%- [@(0.0.255) void]_[* ScrollView]([@(0.0.255) c 1676onst]_[_^Rect^ Rect][@(0.0.255) `&]_[*@3 r], [@(0.0.255) int]_[*@3 dx], 1677[@(0.0.255) int]_[*@3 dy])&] 1678[s2; Marks requested view rectangle for repainting, indicating that 1679part of this repaint can be done by scrolling current content 1680of rectangle. Note that actual scroll is deferred to repaint 1681and that U`+`+ is still allowed to solve the situation by repainting 1682rather than scrolling.&] 1683[s7;i1120;a17; [%-*C@3 r]-|Area for repainting.&] 1684[s7;i1120;a17; [%-*C@3 dx]-|Horizontal scroll.&] 1685[s7;i1120;a17; [%-*C@3 dy]-|Vertical scroll.&] 1686[s3;%- &] 1687[s4;%- &] 1688[s5;:Ctrl`:`:ScrollView`(int`,int`,int`,int`,int`,int`):%- [@(0.0.255) void]_[* ScrollVie 1689w]([@(0.0.255) int]_[*@3 x], [@(0.0.255) int]_[*@3 y], [@(0.0.255) int]_[*@3 cx], 1690[@(0.0.255) int]_[*@3 cy], [@(0.0.255) int]_[*@3 dx], [@(0.0.255) int]_[*@3 dy])&] 1691[s2;b17;a17; Marks requested view rectangle for repainting, indicating 1692that part of this repaint can be done by scrolling current content 1693of rectangle. Note that actual scroll is deferred to repaint 1694and that U`+`+ is still allowed to solve the situation by repainting 1695rather than scrolling.&] 1696[s7;i1120;a17; [%-*C@3 r]-|Area for repainting.&] 1697[s7;i1120;a17; [%-*C@3 x]-|Left position of rectangle.&] 1698[s7;i1120;a17; [%-*C@3 y]-|Top position of rectangle.&] 1699[s7;i1120;a17; [%-*C@3 cx]-|Width.&] 1700[s7;i1120;a17; [%-*C@3 cy]-|Height.&] 1701[s7;i1120;a17; [%-*C@3 dx]-|Horizontal scroll.&] 1702[s7;i1120;a17; [%-*C@3 dy]-|Vertical scroll.&] 1703[s3;%- &] 1704[s4;%- &] 1705[s5;:Ctrl`:`:ScrollView`(int`,int`):%- [@(0.0.255) void]_[* ScrollView]([@(0.0.255) int]_[*@3 d 1706x], [@(0.0.255) int]_[*@3 dy])&] 1707[s2;b17;a17; Marks while view area for repainting, indicating that 1708part of this repaint can be done by scrolling current content 1709of rectangle. Note that actual scroll is deferred to repaint 1710and that U`+`+ is still allowed to solve the situation by repainting 1711rather than scrolling.&] 1712[s7;i1120;a17; [%-*C@3 dx]-|Horizontal scroll.&] 1713[s7;i1120;a17; [%-*C@3 dy]-|Vertical scroll.&] 1714[s3;%- &] 1715[s4;%- &] 1716[s5;:Ctrl`:`:ScrollView`(const Rect`&`,Size`):%- [@(0.0.255) void]_[* ScrollView]([@(0.0.255) c 1717onst]_[_^`:`:Rect^ Rect][@(0.0.255) `&]_[*@3 r], [_^`:`:Size^ Size]_[*@3 delta])&] 1718[s2;b17;a17; Same as ScrollView(r, delta.cx, delta.cy).&] 1719[s3;%- &] 1720[s4;%- &] 1721[s5;:Ctrl`:`:ScrollView`(Size`):%- [@(0.0.255) void]_[* ScrollView]([_^`:`:Size^ Size]_[*@3 d 1722elta])&] 1723[s2;b17;a17; Same as ScrollView(delta.cx, delta.cy).&] 1724[s3;%- &] 1725[s4;%- &] 1726[s5;:Ctrl`:`:Sync`(`):%- [@(0.0.255) void]_[* Sync]()&] 1727[s2;b17;a17; Forces immediate repainting of areas marked using Refresh, 1728RefreshFrame or ScrollView methods.&] 1729[s3; &] 1730[s4;%- &] 1731[s5;:Ctrl`:`:Sync`(const Rect`&`):%- [@(0.0.255) void]_[* Sync]([@(0.0.255) const]_[_^Rect^ R 1732ect][@(0.0.255) `&]_[*@3 r])&] 1733[s2; Forces immediate repainting of areas marked using Refresh, RefreshFrame 1734or ScrollView methods, limited with intersection of given rectangle.&] 1735[s7;i1120;a17; [%-*C@3 r]-|Rectangle.&] 1736[s3; &] 1737[s4;%- &] 1738[s5;:Ctrl`:`:OverrideCursor`(const Image`&`):%- [@(0.0.255) static] 1739[_^Image^ Image]_[* OverrideCursor]([@(0.0.255) const]_[_^Image^ Image][@(0.0.255) `&]_[*@3 m 1740])&] 1741[s2; Overrides mouse cursor to [%-*@3 m]. To end the override, call 1742it again with the Image returned by the override call.&] 1743[s2; &] 1744[s4;%- &] 1745[s5;:Ctrl`:`:DrawCtrl`(Draw`&`,int`,int`):%- [@(0.0.255) void]_[* DrawCtrl]([_^Draw^ Draw][@(0.0.255) `& 1746]_[*@3 w], [@(0.0.255) int]_[*@3 x]_`=_[@3 0], [@(0.0.255) int]_[*@3 y]_`=_[@3 0])&] 1747[s2; Draws Ctrl at specified position. This is intended for utility 1748purposes like taking screen`-shots. This version Draws Ctrl [/ without] 1749background (supplied by parent).&] 1750[s7;i1120;a17; [%-*C@3 w]-|Target Draw.&] 1751[s7;i1120;a17; [%-*C@3 x, ][*C@3 y]-|Position.&] 1752[s3; &] 1753[s4;%- &] 1754[s5;:Ctrl`:`:DrawCtrlWithParent`(Draw`&`,int`,int`):%- [@(0.0.255) void]_[* DrawCtrlWithP 1755arent]([_^Draw^ Draw][@(0.0.255) `&]_[*@3 w], [@(0.0.255) int]_[*@3 x]_`=_[@3 0], 1756[@(0.0.255) int]_[*@3 y]_`=_[@3 0])&] 1757[s2; Draws Ctrl at specified position. This is intended for utility 1758purposes like taking screen`-shots. This version Draws Ctrl [/ with] 1759background (supplied by parent).&] 1760[s7;i1120;a17; [%-*C@3 w]-|Target Draw.&] 1761[s7;i1120;a17; [%-*C@3 x, ][*C@3 y]-|Position.&] 1762[s3;%- &] 1763[s4;%- &] 1764[s5;:Ctrl`:`:HasChild`(Ctrl`*`)const:%- [@(0.0.255) bool]_[* HasChild]([_^`:`:Ctrl^ Ctrl]_`* 1765[*@3 ctrl])_[@(0.0.255) const]&] 1766[s2;b17;a17; Tests whether Ctrl has specified [/ direct] child.&] 1767[s7;i1120;a17; [%-*C@3 ctrl]-|Child.&] 1768[s7;i1120;a17; [*/ Return value]-|true if ctrl is child.&] 1769[s3;%- &] 1770[s4;%- &] 1771[s5;:Ctrl`:`:HasChildDeep`(Ctrl`*`)const:%- [@(0.0.255) bool]_[* HasChildDeep]([_^`:`:Ctrl^ C 1772trl]_`*[*@3 ctrl])_[@(0.0.255) const]&] 1773[s2;b17;a17; Tests whether Ctrl has specified ctrl in its child tree 1774(direct or indirect).&] 1775[s7;i1120;a17; [%-*C@3 ctrl]-|Child.&] 1776[s7;i1120;a17; [*/ Return value]-|true if ctrl is in child tree.&] 1777[s3;%- &] 1778[s4;%- &] 1779[s5;:Ctrl`:`:IgnoreMouse`(bool`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* IgnoreMouse]([@(0.0.255) b 1780ool]_[*@3 b]_`=_[@(0.0.255) true])&] 1781[s2;b17;a17; Sets ignore`-mouse flag. When active, Ctrl is ignored 1782for mouse input. That is important for static Ctrls that cover 1783other Ctrls, like LabelBox `- this flag ensures, that mouse input 1784is not consumed by LabelBox, but is distributed to Ctrls that 1785lay inside it.&] 1786[s7;i1120;a17; [%-*C@3 b]-|Value of flag.&] 1787[s7;i1120;a17; [*/ Return value]-|`*this for method chaining.&] 1788[s3;%- &] 1789[s4;%- &] 1790[s5;:Ctrl`:`:NoIgnoreMouse`(`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* NoIgnoreMouse]()&] 1791[s2;b17;a17; Same as IgnoreMouse(false).&] 1792[s7;i1120;a17; [*/ Return value]-|`*this for method chaining.&] 1793[s3;%- &] 1794[s4;%- &] 1795[s5;:Ctrl`:`:IsIgnoreMouse`(`)const:%- [@(0.0.255) bool]_[* IsIgnoreMouse]()_[@(0.0.255) co 1796nst]&] 1797[s2; Returns the ignore`-mouse flag (see IgnoreMouse).&] 1798[s3;%- &] 1799[s4;%- &] 1800[s5;:Ctrl`:`:HasMouse`(`)const:%- [@(0.0.255) bool]_[* HasMouse]()_[@(0.0.255) const]&] 1801[s7;i1120;a17; [*/ Return value]-|true when Ctrl is target for mouse 1802events.&] 1803[s3;%- &] 1804[s4;%- &] 1805[s5;:Ctrl`:`:HasMouseDeep`(`)const:%- [@(0.0.255) bool]_[* HasMouseDeep]()_[@(0.0.255) cons 1806t]&] 1807[s2; Returns true if Ctrl or any of its descendants is target for 1808mouse events.&] 1809[s3;%- &] 1810[s4;%- &] 1811[s5;:Ctrl`:`:HasMouseInFrame`(const Rect`&`)const:%- [@(0.0.255) bool]_[* HasMouseInFrame 1812]([@(0.0.255) const]_[_^Rect^ Rect][@(0.0.255) `&]_[*@3 r])_[@(0.0.255) const]&] 1813[s7;i1120;a17; [%-*C@3 r]-|rectangle in frame area.&] 1814[s7;i1120;a17; [*/ Return value]-|true when Ctrl is target for mouse 1815events and mouse pointer is inside specified frame area rectangle.&] 1816[s3; &] 1817[s4;%- &] 1818[s5;:Ctrl`:`:HasMouseIn`(const Rect`&`)const:%- [@(0.0.255) bool]_[* HasMouseIn]([@(0.0.255) c 1819onst]_[_^Rect^ Rect][@(0.0.255) `&]_[*@3 r])_[@(0.0.255) const]&] 1820[s2; Returns true when Ctrl is target for mouse events and mouse 1821pointer is inside specified view area rectangle.&] 1822[s3;%- &] 1823[s4;%- &] 1824[s5;:Ctrl`:`:GetMouseViewPos`(`)const:%- [_^Point^ Point]_[* GetMouseViewPos]()_[@(0.0.255) c 1825onst]&] 1826[s2; Returns the position of mouse relative to the view area. Note 1827that the result can negative point or point outside &] 1828[s3;%- &] 1829[s4;%- &] 1830[s5;:Ctrl`:`:GetMouseCtrl`(`):%- [@(0.0.255) static] [_^`:`:Ctrl^ Ctrl]_`*[* GetMouseCtrl]( 1831)&] 1832[s7;i1120;a17; Returns current target for mouse events.&] 1833[s3;%- &] 1834[s4;%- &] 1835[s5;:Ctrl`:`:IgnoreMouseClick`(`):%- [@(0.0.255) static] [@(0.0.255) void]_[* IgnoreMouseCl 1836ick]()&] 1837[s2;b17;a17; Forces framework to ignore all mouse events till next 1838button`-up event. This is good tool to solve some corner cases, 1839like popup window closed by button click when mouse pointer is 1840over its owner as well (TopWindow`::Close calls this function).&] 1841[s3;%- &] 1842[s4;%- &] 1843[s5;:Ctrl`:`:IgnoreMouseUp`(`):%- [@(0.0.255) static] [@(0.0.255) void]_[* IgnoreMouseUp]() 1844&] 1845[s2;b17;a17; Invokes IgnoreMouseClick if some of mouse buttons is 1846pressed.&] 1847[s3;%- &] 1848[s4;%- &] 1849[s5;:Ctrl`:`:UnIgnoreMouse`(`):%- [@(0.0.255) static] [@(0.0.255) void]_[* UnIgnoreMouse]() 1850&] 1851[s2; Cancels the effect or IgnoreMouseClick and IgnoreMouseUp (clicks 1852are not ignored anymore).&] 1853[s3;%- &] 1854[s4;%- &] 1855[s5;:Ctrl`:`:SetCapture`(`):%- [@(0.0.255) bool]_[* SetCapture]()&] 1856[s2;b17;a17; Sets mouse capture for Ctrl. This method should be called 1857in MouseLeft or MouseRight methods only. Ctrl will receive all 1858mouse input until ReleaseCapture is called or mouse button is 1859released.&] 1860[s7;i1120;a17; [*/ Return value]-|True when SetCapture was successful 1861(usually you can ignore this return value).&] 1862[s3;%- &] 1863[s4;%- &] 1864[s5;:Ctrl`:`:ReleaseCapture`(`):%- [@(0.0.255) bool]_[* ReleaseCapture]()&] 1865[s2;b17;a17; Release Ctrl`'s mouse capture.&] 1866[s7;i1120;a17; [*/ Return value]-|True when mouse capture was released.&] 1867[s3;%- &] 1868[s4;%- &] 1869[s5;:Ctrl`:`:HasCapture`(`)const:%- [@(0.0.255) bool]_[* HasCapture]()_[@(0.0.255) const]&] 1870[s7;i1120;a17; [*/ Return value]-|True if Ctrl has mouse capture.&] 1871[s3;%- &] 1872[s3;%- &] 1873[s4;%- &] 1874[s5;:Ctrl`:`:GetCaptureCtrl`(`):%- [@(0.0.255) static] [_^Ctrl^ Ctrl]_`*[* GetCaptureCtrl]( 1875)&] 1876[s2; Returns a pointer to the Ctrl that is currently capturing the 1877mouse.&] 1878[s3; &] 1879[s4;%- &] 1880[s5;:Ctrl`:`:ReleaseCtrlCapture`(`):%- [@(0.0.255) static] [@(0.0.255) bool]_[* ReleaseCtrl 1881Capture]()&] 1882[s2;b17;a17; If any of application`'s Ctrls has mouse capture, it 1883is released.&] 1884[s7;i1120;a17; [*/ Return value]-|True if mouse capture was released.&] 1885[s3;%- &] 1886[s4;%- &] 1887[s5;:Ctrl`:`:SetFocus`(`):%- [@(0.0.255) bool]_[* SetFocus]()&] 1888[s2;b17;a17; Sets keyboard input focus to the Ctrl. Ctrl is first 1889to receive keyboard events via Key method as long as it has keyboard 1890input focus. When Ctrl denies keyboard event (by returning false 1891from Key method), it is passed to its parent`'s Key method and 1892so on.&] 1893[s7;i1120;a17; [*/ Return value]-|True if setting focus was successful.&] 1894[s3;%- &] 1895[s4;%- &] 1896[s5;:Ctrl`:`:HasFocus`(`)const:%- [@(0.0.255) bool]_[* HasFocus]()_[@(0.0.255) const]&] 1897[s7;i1120;a17; [*/ Return value]-|True if Ctrl has keyboard input focus.&] 1898[s3;%- &] 1899[s4;%- &] 1900[s5;:Ctrl`:`:HasFocusDeep`(`)const:%- [@(0.0.255) bool]_[* HasFocusDeep]()_[@(0.0.255) cons 1901t]&] 1902[s7;i1120;a17; [*/ Return value]-|True if Ctrl or any of its descendants 1903has focus or is equal to GetOwnerCtrl of any active popup.&] 1904[s3;%- &] 1905[s4;%- &] 1906[s5;:Ctrl`:`:WantFocus`(bool`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* WantFocus]([@(0.0.255) b 1907ool]_[*@3 ft]_`=_[@(0.0.255) true])&] 1908[s2;b17;a17; Indicates whether Ctrl wants focus to be passed to it 1909by U`+`+, when navigating through the dialog using Tab (or Shift`+Tab) 1910key.&] 1911[s7;i1120;a17; [%-*C@3 ft]-|true to indicate that Ctrl wants focus.&] 1912[s7;i1120;a17; [*/ Return value]-|Same Ctrl for method chaining.&] 1913[s3;%- &] 1914[s4;%- &] 1915[s5;:Ctrl`:`:NoWantFocus`(`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* NoWantFocus]()&] 1916[s7;i1120;a17; [*/ Return value]-|Same Ctrl for method chaining.&] 1917[s3;%- &] 1918[s4;%- &] 1919[s5;:Ctrl`:`:IsWantFocus`(`)const:%- [@(0.0.255) bool]_[* IsWantFocus]()_[@(0.0.255) const]&] 1920[s2;b17;a17;%- Checks whether Ctrl has WantFocus acti.&] 1921[s7;i1120;a17; [*/ Return value]-|true, when Ctrl wants focus.&] 1922[s3;%- &] 1923[s4;%- &] 1924[s5;:Ctrl`:`:InitFocus`(bool`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* InitFocus]([@(0.0.255) b 1925ool]_[*@3 ft]_`=_[@(0.0.255) true])&] 1926[s2;b17;a17; Indicates that Ctrl is eligible to obtain focus upon 1927opening of dialog or in other similar situations.&] 1928[s7;i1120;a17; [%-*C@3 ft]-|true to indicate Ctrl is eligible.&] 1929[s7;i1120;a17; [*/ Return value]-|Same Ctrl for method chaining.&] 1930[s3;%- &] 1931[s4;%- &] 1932[s5;:Ctrl`:`:NoInitFocus`(`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* NoInitFocus]()&] 1933[s2;b17;a17; Same as InitFocus(false).&] 1934[s7;i1120;a17; [*/ Return value]-|Same Ctrl for method chaining.&] 1935[s3;%- &] 1936[s4;%- &] 1937[s5;:Ctrl`:`:IsInitFocus`(`):%- [@(0.0.255) bool]_[* IsInitFocus]()&] 1938[s7;i1120;a17; [*/ Return value]-|true when Ctrl wants init focus.&] 1939[s3;%- &] 1940[s4;%- &] 1941[s5;:Ctrl`:`:SetWantFocus`(`):%- [@(0.0.255) bool]_[* SetWantFocus]()&] 1942[s2;b17;a17; If Ctrl wants focus (WantFocus(true) was called for 1943it), set focus to Ctrl, otherwise nothing happens.&] 1944[s7;i1120;a17; [*/ Return value]-|true if focus was set.&] 1945[s3;%- &] 1946[s4;%- &] 1947[s5;:Ctrl`:`:GetFocusChild`(`)const:%- [_^`:`:Ctrl^ Ctrl]_`*[* GetFocusChild]()_[@(0.0.255) c 1948onst]&] 1949[s2;b17;a17; If any immediate child of Ctrl has focus, returns pointer 1950to it.&] 1951[s7;i1120;a17; [*/ Return value]-|Pointer to child with focus or NULL 1952if no such exists.&] 1953[s3;%- &] 1954[s4;%- &] 1955[s5;:Ctrl`:`:GetFocusChildDeep`(`)const:%- [_^`:`:Ctrl^ Ctrl]_`*[* GetFocusChildDeep]()_[@(0.0.255) c 1956onst]&] 1957[s2;b17;a17; If any child of Ctrl`'s child tree has focus, returns 1958pointer to it.&] 1959[s7;i1120;a17; [*/ Return value]-|&] 1960[s3;%- &] 1961[s4;%- &] 1962[s5;:Ctrl`:`:CancelModeDeep`(`):%- [@(0.0.255) void]_[* CancelModeDeep]()&] 1963[s2;b17;a17; Calls CancelMode virtual method for Ctrl and all of 1964its descendants.&] 1965[s3;%- &] 1966[s4;%- &] 1967[s5;:Ctrl`:`:SetCaret`(int`,int`,int`,int`):%- [@(0.0.255) void]_[* SetCaret]([@(0.0.255) i 1968nt]_[*@3 x], [@(0.0.255) int]_[*@3 y], [@(0.0.255) int]_[*@3 cx], [@(0.0.255) int]_[*@3 cy])&] 1969[s2;b17;a17; Place caret rectangle block at given position in view 1970area. Caret rectangle is full flashing box and usually indicates 1971place where text is to entered. Ctrl can have just one caret. 1972Only Ctrl with focus has its caret displayed (also means that 1973you do not need to remove caret when Ctrl goes out of focus).&] 1974[s7;i1120;a17; [%-*C@3 x]-|X position.&] 1975[s7;i1120;a17; [%-*C@3 y]-|Y position.&] 1976[s7;i1120;a17; [%-*C@3 cx]-|Horizontal size.&] 1977[s7;i1120;a17; [%-*C@3 cy]-|Vertical size.&] 1978[s3;%- &] 1979[s4;%- &] 1980[s5;:Ctrl`:`:SetCaret`(const `:`:Rect`&`):%- [@(0.0.255) void]_[* SetCaret]([@(0.0.255) con 1981st]_[_^`:`:Rect^ Rect][@(0.0.255) `&]_[*@3 r])&] 1982[s2;b17;a17; Place caret rectangle block at given position in view 1983area. Caret rectangle is full flashing box and usually indicates 1984place where text is to entered. Ctrl can have just one caret. 1985Only Ctrl with focus has its caret displayed (also means that 1986you do not need to remove caret when Ctrl goes out of focus).&] 1987[s7;i1120;a17; [%-*C@3 r]-|Caret block rectangle.&] 1988[s3;%- &] 1989[s4;%- &] 1990[s5;:Ctrl`:`:KillCaret`(`):%- [@(0.0.255) void]_[* KillCaret]()&] 1991[s2;b17;a17; Removes caret from Ctrl.&] 1992[s3;%- &] 1993[s4;%- &] 1994[s5;:Ctrl`:`:GetFocusCtrl`(`):%- [@(0.0.255) static] [_^`:`:Ctrl^ Ctrl]_`*[* GetFocusCtrl]( 1995)&] 1996[s7;i1120;a17; [*/ Return value]-|Ctrl that has focus or NULL if no 1997Ctrl of application has it.&] 1998[s3; &] 1999[s4;%- &] 2000[s5;:Ctrl`:`:IterateFocusForward`(Ctrl`*`,Ctrl`*`,bool`,bool`,bool`):%- [@(0.0.255) sta 2001tic] [@(0.0.255) bool]_[* IterateFocusForward]([_^Ctrl^ Ctrl]_`*[*@3 ctrl], 2002[_^Ctrl^ Ctrl]_`*[*@3 top], [@(0.0.255) bool]_[*@3 noframe]_`=_[@(0.0.255) false], 2003[@(0.0.255) bool]_[*@3 init]_`=_[@(0.0.255) false], [@(0.0.255) bool]_[*@3 all]_`=_[@(0.0.255) f 2004alse])&] 2005[s2; Tries to move focus to next `"appropriate`" Ctrl, like when 2006Tab key is pressed in the dialog. Appropriate Ctrl needs to have 2007WantFocus flag, be visible and enabled.&] 2008[s7;i1120;a17; [%-*C@3 ctrl]-|Ctrl with focus.&] 2009[s7;i1120;a17; [%-*C@3 top]-|Top Ctrl `- function cycles only between 2010this Ctrl subtree.&] 2011[s7;i1120;a17; [%-*C@3 noframe]-|Indicates that frame Ctrls are to be 2012excluded.&] 2013[s7;i1120;a17; [*/ Return value]-|true when focus was successfully moved.&] 2014[s3; &] 2015[s4;%- &] 2016[s5;:Ctrl`:`:IterateFocusBackward`(Ctrl`*`,Ctrl`*`,bool`,bool`):%- [@(0.0.255) static] 2017[@(0.0.255) bool]_[* IterateFocusBackward]([_^Ctrl^ Ctrl]_`*[*@3 ctrl], 2018[_^Ctrl^ Ctrl]_`*[*@3 top], [@(0.0.255) bool]_[*@3 noframe]_`=_[@(0.0.255) false], 2019[@(0.0.255) bool]_[*@3 all]_`=_[@(0.0.255) false])&] 2020[s2; Tries to move focus to previous appropriate Ctrl, like when 2021Tab key is pressed in the dialog. `"Appropriate`" Ctrl needs 2022to have WantFocus flag, be visible and enabled.&] 2023[s7;i1120;a17; [%-*C@3 ctrl]-|Ctrl with focus.&] 2024[s7;i1120;a17; [%-*C@3 top]-|Top Ctrl `- function cycles only between 2025this Ctrl subtree.&] 2026[s7;i1120;a17; [%-*C@3 noframe]-|Indicates that frame Ctrls are to be 2027excluded.&] 2028[s7;i1120;a17; [*C@3 init]-|Ctrl must have InitFocus flag.&] 2029[s7;i1120;a17; [*/ Return value]-|true when focus was successfully moved.&] 2030[s3;%- &] 2031[s4;%- &] 2032[s5;:Ctrl`:`:AccessKeyBit`(byte`):%- [@(0.0.255) static] [_^`:`:dword^ dword]_[* AccessKeyB 2033it]([_^`:`:byte^ byte]_[*@3 accesskey])&] 2034[s2;b17;a17; Returns bit`-mask for specified access`-key.&] 2035[s7;i1120;a17; [%-*C@3 accesskey]-|Access`-key. It should be plain ASCII 2036value of access`-key.&] 2037[s7;i1120;a17; [*/ Return value]-|Access`-key bitmask. Note that only 2038`'A`' `- `'Z`' have distinct bit`-masks as those are only access`-keys 2039distributed automatically.&] 2040[s3;%- &] 2041[s4;%- &] 2042[s5;:Ctrl`:`:GetAccessKeysDeep`(`)const:%- [_^`:`:dword^ dword]_[* GetAccessKeysDeep]()_[@(0.0.255) c 2043onst]&] 2044[s5;:Ctrl`:`:GetAccessKeysDeep`(`)const:%- [_^`:`:dword^ dword]_[* GetAccessKeysDeep]()_[@(0.0.255) c 2045onst]&] 2046[s2;b17;a17; Returns binary or of Ctrl`'s GetAccessKey method results 2047with the result of calling GetAccessKeyDeep for all children. 2048In other words, returns key coverage for the whole Ctrl tree.&] 2049[s7;i1120;a17; [*/ Return value]-|Access`-keys used by Ctrl and its 2050descendants.&] 2051[s3;%- &] 2052[s4;%- &] 2053[s5;:Ctrl`:`:DistributeAccessKeys`(`):%- [@(0.0.255) void]_[* DistributeAccessKeys]()&] 2054[s2;b17;a17; Triggers automatic distribution of access keys. This 2055is implemented as gathering all already used access keys using 2056GetAccessKeys method and then using AssignAccessKeys method with 2057this value to distribute rest of keys (in other words, it is 2058equivalent of AssignAccessKeys(GetAccessKeys())).&] 2059[s3;%- &] 2060[s4;%- &] 2061[s5;:Ctrl`:`:RefreshAccessKeys`(`):%- [@(0.0.255) void]_[* RefreshAccessKeys]()&] 2062[s2;b17;a17; Invokes Refresh for this Ctrl or any descendant with 2063any access`-key assigned.&] 2064[s3;%- &] 2065[s4;%- &] 2066[s5;:Ctrl`:`:VisibleAccessKeys`(`):%- [@(0.0.255) bool]_[* VisibleAccessKeys]()&] 2067[s7;i1120;a17; [*/ Return value]-|True if according to current access`-key 2068model there should be visible graphical representation (usually 2069underline) of access`-keys.&] 2070[s3;%- &] 2071[s4;%- &] 2072[s5;:Ctrl`:`:Show`(bool`):%- [@(0.0.255) void]_[* Show]([@(0.0.255) bool]_[*@3 show]_`=_[@(0.0.255) t 2073rue])&] 2074[s2;b17;a17; Sets visibility flag for Ctrl.&] 2075[s7;i1120;a17; [%-*C@3 show]-|true indicates that Ctrl should be visible.&] 2076[s3;%- &] 2077[s4;%- &] 2078[s5;:Ctrl`:`:Hide`(`):%- [@(0.0.255) void]_[* Hide]()&] 2079[s2;b17;a17; Same as Show(false).&] 2080[s3;%- &] 2081[s4;%- &] 2082[s5;:Ctrl`:`:IsShown`(`)const:%- [@(0.0.255) bool]_[* IsShown]()_[@(0.0.255) const]&] 2083[s7;i1120;a17; [*/ Return value]-|visibility flag for Ctrl.&] 2084[s3;%- &] 2085[s4;%- &] 2086[s5;:Ctrl`:`:IsVisible`(`)const:%- [@(0.0.255) bool]_[* IsVisible]()_[@(0.0.255) const]&] 2087[s7;i1120;a17; [*/ Return value]-|true if Ctrl is currently visible 2088on the screen. Ctrl is visible if it has visibility flag set, 2089its parent is visible and its top`-level Ctrl is open.&] 2090[s3;%- &] 2091[s4;%- &] 2092[s5;:Ctrl`:`:Enable`(bool`):%- [@(0.0.255) void]_[* Enable]([@(0.0.255) bool]_[*@3 enable]_`= 2093_[@(0.0.255) true])&] 2094[s2;b17;a17; Enables or disables Ctrl.&] 2095[s7;i1120;a17; [%-*C@3 enable]-|true indicates that Ctrl should be enabled.&] 2096[s3;%- &] 2097[s4;%- &] 2098[s5;:Ctrl`:`:Disable`(`):%- [@(0.0.255) void]_[* Disable]()&] 2099[s2;b17;a17; Same as Enable(false).&] 2100[s3;%- &] 2101[s4;%- &] 2102[s5;:Ctrl`:`:IsEnabled`(`)const:%- [@(0.0.255) bool]_[* IsEnabled]()_[@(0.0.255) const]&] 2103[s7;i1120;a17; [*/ Return value]-|true if Ctrl is enabled.&] 2104[s3;%- &] 2105[s4;%- &] 2106[s5;:Ctrl`:`:SetEditable`(bool`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* SetEditable]([@(0.0.255) b 2107ool]_[*@3 editable]_`=_[@(0.0.255) true])&] 2108[s2;b17;a17; Sets editable or read`-only mode of Ctrl. Specific Ctrls 2109can check this flag using IsEditable method and behave accordingly.&] 2110[s7;i1120;a17; [%-*C@3 editable]-|true indicates that Ctrl is editable.&] 2111[s7;i1120;a17; [*/ Return value]-|`*this for method chaining.&] 2112[s3;%- &] 2113[s4;%- &] 2114[s5;:Ctrl`:`:SetReadOnly`(`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* SetReadOnly]()&] 2115[s2;b17;a17; Same as SetEditable(false).&] 2116[s3;%- &] 2117[s4;%- &] 2118[s5;:Ctrl`:`:IsEditable`(`)const:%- [@(0.0.255) bool]_[* IsEditable]()_[@(0.0.255) const]&] 2119[s7;i1120;a17; [*/ Return value]-|true if Ctrl is editable.&] 2120[s3;%- &] 2121[s4;%- &] 2122[s5;:Ctrl`:`:IsReadOnly`(`)const:%- [@(0.0.255) bool]_[* IsReadOnly]()_[@(0.0.255) const]&] 2123[s2;b17;a17; Same as !IsEditable().&] 2124[s3;%- &] 2125[s4;%- &] 2126[s5;:Upp`:`:Ctrl`:`:ClearModifyDeep`(`):%- [@(0.0.255) void]_[* ClearModifyDeep]()&] 2127[s2; Clear modify flag (by calling ClearModify) for the widgets and 2128all its descendants.&] 2129[s3;%- &] 2130[s4;%- &] 2131[s5;:Upp`:`:Ctrl`:`:IsModifiedDeep`(`)const:%- [@(0.0.255) bool]_[* IsModifiedDeep]()_[@(0.0.255) c 2132onst]&] 2133[s2; Returns true if widget or any of its descendants have modify 2134flag active.&] 2135[s3;%- &] 2136[s4;%- &] 2137[s5;:Ctrl`:`:UpdateRefresh`(`):%- [@(0.0.255) void]_[* UpdateRefresh]()&] 2138[s2;b17;a17; Calls both Update and Refresh methods.&] 2139[s3;%- &] 2140[s4;%- &] 2141[s5;:Ctrl`:`:Update`(`):%- [@(0.0.255) void]_[* Update]()&] 2142[s2;b17;a17; Same as SetModify().&] 2143[s3;%- &] 2144[s4;%- &] 2145[s5;:Ctrl`:`:Action`(`):%- [@(0.0.255) void]_[* Action]()&] 2146[s2;b17;a17; Invokes default Ctrl callback `- WhenAction. Action 2147actually makes a copy of WhenAction `- this ensures that the 2148Event<> object is not destroyed during the call.&] 2149[s3;%- &] 2150[s4;%- &] 2151[s5;:Ctrl`:`:UpdateAction`(`):%- [@(0.0.255) void]_[* UpdateAction]()&] 2152[s2;b17;a17; Calls Update and then Action.&] 2153[s3;%- &] 2154[s4;%- &] 2155[s5;:Ctrl`:`:UpdateActionRefresh`(`):%- [@(0.0.255) void]_[* UpdateActionRefresh]()&] 2156[s2;b17;a17; Calls Update, then Action, then Refresh. Typically called 2157after user changes values of Ctrl.&] 2158[s3;%- &] 2159[s4;%- &] 2160[s5;:Ctrl`:`:BackPaint`(int`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* BackPaint]([@(0.0.255) i 2161nt]_[*@3 bp]_`=_FULLBACKPAINT)&] 2162[s2;b17;a17; Activates back`-paint mode for Ctrl.&] 2163[s7;i1120;a17; [%-*C@3 bp]-|Back`-paint mode.&] 2164[s7;i1120;a17; [*/ Return value]-|`*this for method chaining.&] 2165[s3;%- &] 2166[s4;%- &] 2167[s5;:Ctrl`:`:TransparentBackPaint`(`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* TransparentBa 2168ckPaint]()&] 2169[s7;i1120;a17; [*/ Return value]-|BackPaint(TRANSPARENTBACKPAINT).&] 2170[s3;%- &] 2171[s4;%- &] 2172[s5;:Ctrl`:`:NoBackPaint`(`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* NoBackPaint]()&] 2173[s7;i1120;a17; [*/ Return value]-|BackPaint(NOBACKPAINT).&] 2174[s3;%- &] 2175[s4;%- &] 2176[s5;:Ctrl`:`:BackPaintHint`(`):%- [_^Ctrl^ Ctrl][@(0.0.255) `&]_[* BackPaintHint]()&] 2177[s2; Activates FULLBACKPAINT mode if computer is a `"decent machine`" 2178(simple heurestics to identify fast enough PC with enough memory).&] 2179[s3;%- &] 2180[s4;%- &] 2181[s5;:Ctrl`:`:GetBackPaint`(`)const:%- [@(0.0.255) int]_[* GetBackPaint]()_[@(0.0.255) const 2182]&] 2183[s7;i1120;a17; [*/ Return value]-|Current back`-paint mode of Ctrl.&] 2184[s3;%- &] 2185[s4;%- &] 2186[s5;:Ctrl`:`:Transparent`(bool`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* Transparent]([@(0.0.255) b 2187ool]_[*@3 bp]_`=_[@(0.0.255) true])&] 2188[s2;b17;a17; Sets transparency flag of Ctrl. If transparency flag 2189is disabled, U`+`+ can paint Ctrl in more effective way.&] 2190[s7;i1120;a17; [%-*C@3 bp]-|Transparency flag.&] 2191[s7;i1120;a17; [*/ Return value]-|`*this for method chaining.&] 2192[s3;%- &] 2193[s4;%- &] 2194[s5;:Ctrl`:`:NoTransparent`(`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* NoTransparent]()&] 2195[s7;i1120;a17; [*/ Return value]-|Transparent(false).&] 2196[s3;%- &] 2197[s4;%- &] 2198[s5;:Ctrl`:`:IsTransparent`(`)const:%- [@(0.0.255) bool]_[* IsTransparent]()_[@(0.0.255) co 2199nst]&] 2200[s7;i1120;a17; [*/ Return value]-|Value of transparency flag.&] 2201[s3;%- &] 2202[s4;%- &] 2203[s5;:Ctrl`:`:ActiveX`(bool`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* ActiveX]([@(0.0.255) boo 2204l]_[*@3 ax]_`=_[@(0.0.255) true])&] 2205[s2;b17;a17; Special flag used for ActiveX Ctrls implementation.&] 2206[s6; Windows specific.&] 2207[s7;i1120;a17; [%-*C@3 ax]-|true `- Ctrl is ActiveX control&] 2208[s7;i1120;a17; [*/ Return value]-|`*this for method chaining.&] 2209[s3;%- &] 2210[s4;%- &] 2211[s5;:Ctrl`:`:NoActiveX`(`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* NoActiveX]()&] 2212[s7;i1120;a17; [*/ Return value]-|ActiveX(false).&] 2213[s3;%- &] 2214[s4;%- &] 2215[s5;:Ctrl`:`:IsActiveX`(`)const:%- [@(0.0.255) bool]_[* IsActiveX]()_[@(0.0.255) const]&] 2216[s7;i1120;a17; [*/ Return value]-|Value of ActiveX flag.&] 2217[s3;%- &] 2218[s4;%- &] 2219[s5;:Ctrl`:`:Info`(const char`*`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* Info]([@(0.0.255) c 2220onst]_[@(0.0.255) char]_`*[*@3 txt])&] 2221[s2;b17;a17; Sets Tip text of Ctrl. This text is displayed as tooltip 2222of Ctrl.&] 2223[s7;i1120;a17; [%-*C@3 txt]-|Text.&] 2224[s7;i1120;a17; [*/ Return value]-|`*this for method chaining.&] 2225[s3;%- &] 2226[s4;%- &] 2227[s5;:Ctrl`:`:HelpLine`(const char`*`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* HelpLine]([@(0.0.255) c 2228onst]_[@(0.0.255) char]_`*[*@3 txt])&] 2229[s2;b17;a17; Sets help topic link for Ctrl.&] 2230[s7;i1120;a17; [%-*C@3 txt]-|Link.&] 2231[s7;i1120;a17; [*/ Return value]-|`*this for method chaining.&] 2232[s3;%- &] 2233[s4;%- &] 2234[s5;:Ctrl`:`:GetTip`(`)const:%- [_^`:`:String^ String]_[* GetTip]()_[@(0.0.255) const]&] 2235[s7;i1120;a17; [*/ Return value]-|Current Tip text.&] 2236[s3;%- &] 2237[s4;%- &] 2238[s5;:Ctrl`:`:GetHelpLine`(`)const:%- [_^`:`:String^ String]_[* GetHelpLine]()_[@(0.0.255) c 2239onst]&] 2240[s7;i1120;a17; [*/ Return value]-|Current HelpTopic link.&] 2241[s3;%- &] 2242[s4;%- &] 2243[s5;:Ctrl`:`:operator`<`<`(Ctrl`&`):%- [_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[* operator<<]([_^`:`:Ctrl^ C 2244trl][@(0.0.255) `&]_[*@3 ctrl])&] 2245[s5;:Ctrl`:`:Add`(Ctrl`&`):%- [@(0.0.255) void]_[* Add]([_^`:`:Ctrl^ Ctrl][@(0.0.255) `&]_[*@3 c 2246trl])&] 2247[s2;b17;a17; Adds ctrl as the last child.&] 2248[s7;i1120;a17; [%-*C@3 ctrl]-|Ctrl to add.&] 2249[s3;%- &] 2250[s4;%- &] 2251[s5;:Ctrl`:`:Remove`(`):%- [@(0.0.255) void]_[* Remove]()&] 2252[s2;b17;a17; Removes Ctrl from its parent.&] 2253[s3; &] 2254[s4;%- &] 2255[s5;:Ctrl`:`:operator`<`<`=`(const Value`&`):%- [@(0.0.255) const]_[_^`:`:Value^ Value][@(0.0.255) `& 2256]_[* operator<<`=]([@(0.0.255) const]_[_^`:`:Value^ Value][@(0.0.255) `&]_[*@3 v])&] 2257[s2;b17;a17; Same as SetData(v).&] 2258[s7;i1120;a17; [%-*C@3 v]-|New Value of Ctrl.&] 2259[s7;i1120;a17; [*/ Return value]-|Reference to v.&] 2260[s3; &] 2261[s4;%- &] 2262[s5;:Upp`:`:Ctrl`:`:operator`<`<`(Upp`:`:Function`<void`(`)`>`):%- [_^Upp`:`:Callback^ C 2263allback][@(0.0.255) `&]_[* operator<<]([_^Upp`:`:Function^ Upp`::Function]<[@(0.0.255) voi 2264d]_()>_[*@3 action])&] 2265[s2; Same as WhenAction << action, can be used both with lambdas 2266and Events (former Callbacks)..&] 2267[s3; &] 2268[s4;%- &] 2269[s5;:Upp`:`:Ctrl`:`:SetTimeCallback`(int`,Upp`:`:Function`<void`(`)`>`,int`):%- [@(0.0.255) v 2270oid]_[* SetTimeCallback]([@(0.0.255) int]_[*@3 delay`_ms], [_^Upp`:`:Function^ Function]< 2271[@(0.0.255) void]_()>_[*@3 cb], [@(0.0.255) int]_[*@3 id]_`=_[@3 0])&] 2272[s2;b17;a17; Puts delayed callback to the timer queue. As an identifier 2273of callback, which is void `* in timer queue, [* this] `+ [* id] 2274is used. When Ctrl is destroyed, all callbacks with [* id] in range 22750 ... sizeof(Ctrl) are removed from timer callback queue `- this 2276ensures that no dangling callbacks are left there.&] 2277[s2; [%-*@3 delay`_ms][%- is d]elay of callback in ms. If this is 0, 2278callback is called immediately after all pending input GUI events 2279are processed. Negative value means the event is periodic `- 2280it is triggered after `-delay`_ms and after being performed, 2281it is rescheduled with the same delay`_ms.&] 2282[s2; [%- Identifier ][%-*@3 id] should be in range 0..80. U`+`+ defines 2283compile`-time protocol for distributing these ids. If Ctrl wants 2284to use non`-zero time callback id, it should define it using&] 2285[s2; &] 2286[s2; -|enum `{ TIMEID`_PERIODIC `= [/ baseclass]`::TIMEID`_COUNT, TIMEID`_COUNT[@(0.0.255) 2287`};]&] 2288[s2; &] 2289[s2; -|Using zero as [* id] is OK as long as you do not intend to remove 2290time callbacks using [* KillTimeCallback. ]Alternative to using 2291id is class TimeCallback that represents whole issue as member 2292variable of Ctrl.&] 2293[s3;%- &] 2294[s4;%- &] 2295[s5;:Ctrl`:`:KillTimeCallback`(int`):%- [@(0.0.255) void]_[* KillTimeCallback]([@(0.0.255) i 2296nt]_[*@3 id]_`=_[@3 0])&] 2297[s2;b17;a17; Removes time callback associated with Ctrl.&] 2298[s7;i1120;a17; [%-*C@3 id]-|Id of callback.&] 2299[s3;%- &] 2300[s4;%- &] 2301[s5;:Upp`:`:Ctrl`:`:KillSetTimeCallback`(int`,Upp`:`:Function`<void`(`)`>`,int`):%- [@(0.0.255) v 2302oid]_[* KillSetTimeCallback]([@(0.0.255) int]_[*@3 delay`_ms], [_^Upp`:`:Function^ Functi 2303on]<[@(0.0.255) void]_()>_[*@3 cb], [@(0.0.255) int]_[*@3 id])&] 2304[s2; Removes callback with [%-*@3 id] and sets it again.&] 2305[s3; &] 2306[s4;%- &] 2307[s5;:Ctrl`:`:ExistsTimeCallback`(int`)const:%- [@(0.0.255) bool]_[* ExistsTimeCallback]([@(0.0.255) i 2308nt]_[*@3 id]_`=_[@3 0])_[@(0.0.255) const]&] 2309[s2;b17;a17; Tests whether Ctrl has associated callback in timer 2310queue.&] 2311[s7;i1120;a17; [%-*C@3 id]-|Id of callback.&] 2312[s7;i1120;a17; [*/ Return value]-|true when id is found in timer queue.&] 2313[s3;%- &] 2314[s4;%- &] 2315[s5;:Upp`:`:Ctrl`:`:PostCallback`(Upp`:`:Function`<void`(`)`>`,int`):%- [@(0.0.255) voi 2316d]_[* PostCallback]([_^Upp`:`:Function^ Function]<[@(0.0.255) void]_()>_[*@3 cb], 2317[@(0.0.255) int]_[*@3 id]_`=_[@3 0])&] 2318[s2; Posts callback to be executed immediately (but in the main loop 2319after all current GUI events).&] 2320[s3; &] 2321[s4;%- &] 2322[s5;:Upp`:`:Ctrl`:`:KillPostCallback`(Upp`:`:Function`<void`(`)`>`,int`):%- [@(0.0.255) v 2323oid]_[* KillPostCallback]([_^Upp`:`:Function^ Function]<[@(0.0.255) void]_()>_[*@3 cb], 2324[@(0.0.255) int]_[*@3 id])&] 2325[s2; Similar to PostCallback, but removes callback(s) with the same 2326id from the queue first.&] 2327[s3; &] 2328[s4;%- &] 2329[s5;:Ctrl`:`:GetActiveCtrl`(`):%- [@(0.0.255) static] [_^`:`:Ctrl^ Ctrl]_`*[* GetActiveCtrl 2330]()&] 2331[s2;b17;a17; Returns pointer to active Ctrl. Active Ctrl is top`-level 2332Ctrl of Ctrl with keyboard focus.&] 2333[s7;i1120;a17; [*/ Return value]-|Pointer to active Ctrl.&] 2334[s3;%- &] 2335[s4;%- &] 2336[s5;:Ctrl`:`:GetActiveWindow`(`):%- [@(0.0.255) static] [_^`:`:Ctrl^ Ctrl]_`*[* GetActiveWi 2337ndow]()&] 2338[s2;b17;a17; Returns pointer to active TopWindow that is either active 2339or owns active Ctrl. Difference between GetActiveWindow and GetActiveCtrl 2340is that GetActiveCtrl can return pop`-up Ctrl, while GetActiveWindow 2341returns always TopWindow `- if active Ctrl is pop`-up, owner 2342of pop`-up is returned.&] 2343[s7;i1120;a17; [*/ Return value]-|Pointer to active window.&] 2344[s3;%- &] 2345[s4;%- &] 2346[s5;:Ctrl`:`:GetVisibleChild`(Ctrl`*`,Point`,bool`):%- [@(0.0.255) static] 2347[_^`:`:Ctrl^ Ctrl]_`*[* GetVisibleChild]([_^`:`:Ctrl^ Ctrl]_`*[*@3 ctrl], 2348[_^`:`:Point^ Point]_[*@3 p], [@(0.0.255) bool]_[*@3 pointinframe])&] 2349[s2;b17;a17; Finds deepest descendant of Ctrl that is visible and 2350contains given point. If not such Ctrl exists, returns this.&] 2351[s7;i1120;a17; [%-*C@3 ctrl]-|Parent ctrl.&] 2352[s7;i1120;a17; [%-*C@3 p]-|Point.&] 2353[s7;i1120;a17; [%-*C@3 pointinframe]-|Determines whether point is in 2354view or frame coordinates.&] 2355[s7;i1120;a17; [*/ Return value]-|Pointer to Ctrl.&] 2356[s3;%- &] 2357[s4;%- &] 2358[s5;:Ctrl`:`:PopUpHWND`(HWND`,bool`,bool`,bool`,bool`):%- [@(0.0.255) void]_[* PopUpHWND]( 2359HWND_[*@3 hwnd], [@(0.0.255) bool]_[*@3 savebits]_`=_[@(0.0.255) true], 2360[@(0.0.255) bool]_[*@3 activate]_`=_[@(0.0.255) true], [@(0.0.255) bool]_[*@3 dropshadow]_`= 2361_[@(0.0.255) false], [@(0.0.255) bool]_[*@3 topmost]_`=_[@(0.0.255) false])&] 2362[s2;b17;a17; Opens top`-level Ctrl as pop`-up window. [*/ This method 2363can only be invoked in the main thread.]&] 2364[s6; [2 Win32 specific.]&] 2365[s7;i1120;a17; [%-*C@3 hwnd]-|Win32 handle of owner window.&] 2366[s7;i1120;a17; [%-*C@3 savebits]-|Indicates that system should try to 2367preserve background bits.&] 2368[s7;i1120;a17; [%-*C@3 activate]-|Pop`-up should be activated.&] 2369[s7;i1120;a17; [%-*C@3 dropshadow]-|Pop`-up should have drop`-shadow 2370(if supported).&] 2371[s7;i1120;a17; [%-*C@3 topmost]-|Pop`-up should be top`-most window.&] 2372[s3;%- &] 2373[s4;%- &] 2374[s5;:Ctrl`:`:PopUp`(Ctrl`*`,bool`,bool`,bool`,bool`):%- [@(0.0.255) void]_[* PopUp]([_^`:`:Ctrl^ C 2375trl]_`*[*@3 owner]_`=_NULL, [@(0.0.255) bool]_[*@3 savebits]_`=_[@(0.0.255) true], 2376[@(0.0.255) bool]_[*@3 activate]_`=_[@(0.0.255) true], [@(0.0.255) bool]_[*@3 dropshadow]_`= 2377_[@(0.0.255) false], [@(0.0.255) bool]_[*@3 topmost]_`=_[@(0.0.255) false])&] 2378[s2;b17;a17; Opens top`-level Ctrl as pop`-up window. [*/ This method 2379can only be invoked in the main thread.]&] 2380[s7;i1120;a17; [%-*C@3 owner]-|Owner.&] 2381[s7;i1120;a17; [%-*C@3 savebits]-|Indicates that system should try to 2382preserve background bits.&] 2383[s7;i1120;a17; [%-*C@3 activate]-|Pop`-up should be activated.&] 2384[s7;i1120;a17; [%-*C@3 dropshadow]-|Pop`-up should have drop`-shadow 2385(if supported).&] 2386[s7;i1120;a17; [%-*C@3 topmost]-|Pop`-up should be top`-most window.&] 2387[s3;%- &] 2388[s4;%- &] 2389[s5;:Ctrl`:`:SetAlpha`(`:`:byte`):%- [@(0.0.255) void]_[* SetAlpha]([_^`:`:byte^ byte]_[*@3 a 2390lpha])&] 2391[s2;b17;a17; Sets top`-level Ctrl alpha blending if supported by 2392system. Ctrl must be open.&] 2393[s7;i1120;a17; [%-*C@3 alpha]-|Value of alpha.&] 2394[s3;%- &] 2395[s4;%- &] 2396[s5;:Ctrl`:`:IsWaitingEvent`(`):%- [@(0.0.255) static] [@(0.0.255) bool]_[* IsWaitingEvent]( 2397)&] 2398[s7;i1120;a17; [*/ Return value]-|True when there is waiting unprocessed 2399event in input queue.&] 2400[s3;%- &] 2401[s4;%- &] 2402[s5;:Ctrl`:`:ProcessEvent`(bool`*`):%- [@(0.0.255) static] [@(0.0.255) bool]_[* ProcessEven 2403t]([@(0.0.255) bool]_`*[*@3 quit]_`=_NULL)&] 2404[s2;b17;a17; Processes single event from input queue. When there 2405is no pending event, returns immediately. (Processing event involves 2406usually involves dispatching it via virtual methods to proper 2407Ctrls).&] 2408[s7;i1120;a17; [%-*C@3 quit]-|Assigned true when WM`_QUIT message is 2409intercepted (Win32 specific).&] 2410[s7;i1120;a17; [*/ Return value]-|True indicates that event was processed, 2411false that queue was empty.&] 2412[s3;%- &] 2413[s4;%- &] 2414[s5;:Ctrl`:`:ProcessEvents`(bool`*`):%- [@(0.0.255) static] [@(0.0.255) bool]_[* ProcessEve 2415nts]([@(0.0.255) bool]_`*[*@3 quit]_`=_NULL)&] 2416[s2;b17;a17; Processes all events from input queue. When there is 2417no pending event, returns immediately. (Processing event involves 2418usually involves dispatching it via virtual methods to proper 2419Ctrls).&] 2420[s7;i1120;a17; [%-*C@3 quit]-|Assigned true when WM`_QUIT message is 2421intercepted (Win32 specific).&] 2422[s7;i1120;a17; [*/ Return value]-|True indicates that one or more events 2423were processed, false that queue was empty.&] 2424[s3;%- &] 2425[s4;%- &] 2426[s5;:Ctrl`:`:IsPopUp`(`)const:%- [@(0.0.255) bool]_[* IsPopUp]()_[@(0.0.255) const]&] 2427[s7;i1120;a17; [*/ Return value]-|True if Ctrl is pop`-up window.&] 2428[s3; &] 2429[s4;%- &] 2430[s5;:Ctrl`:`:EventLoop`(Ctrl`*`):%- [@(0.0.255) static] [@(0.0.255) void]_[* EventLoop]([_^`:`:Ctrl^ C 2431trl]_`*[*@3 loopctrl]_`=_NULL)&] 2432[s2;b17;a17; Executes event`-loop. If [*@3 loopctrl ]is not NULL, it 2433must be opened top`-level Ctrl and loop is executed until EndLoop 2434method for [*@3 loopctrl ]is invoked. If [*@3 loopctrl] is NULL, 2435loop is executed as long as any top`-level Ctrl exists or application 2436is terminated by OS specific `"shutdown`" event. [*/ This method 2437can only be invoked in the main thread.]&] 2438[s7;i1120;a17; [%-*C@3 loopctrl]-|Looping Ctrl.&] 2439[s3;%- &] 2440[s4;%- &] 2441[s5;:Ctrl`:`:GetLoopLevel`(`):%- [@(0.0.255) static] [@(0.0.255) int]_[* GetLoopLevel]()&] 2442[s7;i1120;a17; [*/ Return value]-|Level of even`-loop (even`-loops a 2443reentrant).&] 2444[s3;%- &] 2445[s4;%- &] 2446[s5;:Ctrl`:`:GetLoopCtrl`(`):%- [@(0.0.255) static] [_^`:`:Ctrl^ Ctrl]_`*[* GetLoopCtrl]()&] 2447[s7;i1120;a17; [*/ Return value]-|Current looping Ctrl.&] 2448[s3;%- &] 2449[s4;%- &] 2450[s5;:Ctrl`:`:EndLoop`(`):%- [@(0.0.255) void]_[* EndLoop]()&] 2451[s2;b17;a17; Terminates loop for looping Ctrl. Note that this terminates 2452only loop for looping Ctrl. If there is another loop above such 2453loop, nothing is terminated until this additional loop is active.&] 2454[s3; &] 2455[s4;%- &] 2456[s5;:Ctrl`:`:EndLoop`(int`):%- [@(0.0.255) void]_[* EndLoop]([@(0.0.255) int]_[*@3 code])&] 2457[s2; Same as EndLoop(), but also defines loop exit code.&] 2458[s7;i1120;a17; [%-*C@3 code]-|Loop exit code.&] 2459[s3;%- &] 2460[s4;%- &] 2461[s5;:Ctrl`:`:InLoop`(`)const:%- [@(0.0.255) bool]_[* InLoop]()_[@(0.0.255) const]&] 2462[s7;i1120;a17; [*/ Return value]-|true if Ctrl is looping Ctrl.&] 2463[s3;%- &] 2464[s4;%- &] 2465[s5;:Ctrl`:`:GetExitCode`(`)const:%- [@(0.0.255) int]_[* GetExitCode]()_[@(0.0.255) const]&] 2466[s7;i1120;a17; [*/ Return value]-|Exit code of last loop performed with 2467this Ctrl.&] 2468[s3;%- &] 2469[s4;%- &] 2470[s5;:Ctrl`:`:Clipboard`(`):%- [@(0.0.255) static] [_^PasteClip^ PasteClip][@(0.0.255) `&]_[* C 2471lipboard]()&] 2472[s2; Represents the clipboard as PasteClip. This allows unification 2473of drag`&drop and clipboard operations as there can be single 2474method handling with Clipboard and Drag`&Drop (and X11 selection) 2475operations.&] 2476[s3;%- &] 2477[s4;%- &] 2478[s5;:Ctrl`:`:Selection`(`):%- [@(0.0.255) static] [_^PasteClip^ PasteClip][@(0.0.255) `&]_[* S 2479election]()&] 2480[s2; Represents X11 selection as PasteClip. This allows unification 2481of drag`&drop and selection operations as there can be single 2482method handling with Clipboard and Drag`&Drop (and X11 selection) 2483operations.&] 2484[s3;%- &] 2485[s4;%- &] 2486[s5;:Ctrl`:`:SetSelectionSource`(const char`*`):%- [@(0.0.255) void]_[* SetSelectionSourc 2487e]([@(0.0.255) const]_[@(0.0.255) char]_`*[*@3 fmts])&] 2488[s2; Tells X11 system that this Ctrl is current selection source, 2489with [%-*@3 fmts] available (semicolon separated list).&] 2490[s3; &] 2491[s4;%- &] 2492[s5;:Ctrl`:`:DoDragAndDrop`(const char`*`,const Image`&`,dword`,const VectorMap`<String`,ClipData`>`&`):%- [@(0.0.255) i 2493nt]_[* DoDragAndDrop]([@(0.0.255) const]_[@(0.0.255) char]_`*[*@3 fmts], 2494[@(0.0.255) const]_[_^Image^ Image][@(0.0.255) `&]_[*@3 sample], [_^dword^ dword]_[*@3 action 2495s], [@(0.0.255) const]_[_^VectorMap^ VectorMap]<[_^String^ String], 2496[_^ClipData^ ClipData]>`&_[*@3 data])&] 2497[s2; Performs drag`&drop operation, with this Ctrl as source. [%-*@3 fmts] 2498is a semicolon separated list of formats available using GetDropData 2499method, [%-*@3 sample] is an image representation of data, [%-*@3 actions] 2500are allowed drag and drop operations `- a binary or DND`_NONE, 2501DND`_COPY, DND`_MOVE (or DND`_ALL as combination of all of them). 2502Special unrelated flag DND`_EXACTIMAGE can be add to actions 2503to indicate that Drag`&Drop should not alter [%-*@3 sample] image 2504(otherwise it can be adjusted to look consistent). [%-*@3 data] 2505is data directly provided for the operation as map of individual 2506formats to ClipData.&] 2507[s3; &] 2508[s4;%- &] 2509[s5;:Ctrl`:`:DoDragAndDrop`(const char`*`,const Image`&`,dword`):%- [@(0.0.255) int]_[* D 2510oDragAndDrop]([@(0.0.255) const]_[@(0.0.255) char]_`*[*@3 fmts], [@(0.0.255) const]_[_^Image^ I 2511mage][@(0.0.255) `&]_[*@3 sample]_`=_Null, [_^dword^ dword]_[*@3 actions]_`=_DND`_ALL)&] 2512[s2; DoDragAndDrop with empty data (all formats are provided by GetDropData).&] 2513[s3; &] 2514[s4;%- &] 2515[s5;:Ctrl`:`:DoDragAndDrop`(const VectorMap`<String`,ClipData`>`&`,const Image`&`,dword`):%- [@(0.0.255) i 2516nt]_[* DoDragAndDrop]([@(0.0.255) const]_[_^VectorMap^ VectorMap]<[_^String^ String], 2517[_^ClipData^ ClipData]>`&_[*@3 data], [@(0.0.255) const]_[_^Image^ Image][@(0.0.255) `&]_[*@3 s 2518ample]_`=_Null, [_^dword^ dword]_[*@3 actions]_`=_DND`_ALL)&] 2519[s2; DoDragAndDrop with empty fmts (all formats are provided by [%-*@3 data]).&] 2520[s3; &] 2521[s4;%- &] 2522[s5;:Ctrl`:`:GetDragAndDropSource`(`):%- [@(0.0.255) static] [_^Ctrl^ Ctrl]_`*[* GetDragAnd 2523DropSource]()&] 2524[s2; Returns current source of Drag and Drop, is such source exists 2525in this process and it is U`+`+ widget (otherwise returns NULL).&] 2526[s3;%- &] 2527[s4;%- &] 2528[s5;:Ctrl`:`:GetDragAndDropTarget`(`):%- [@(0.0.255) static] [_^Ctrl^ Ctrl]_`*[* GetDragAnd 2529DropTarget]()&] 2530[s2; Returns current target of Drag and Drop, is such target exists 2531in this process and it is U`+`+ widget (otherwise returns NULL).&] 2532[s3;%- &] 2533[s4;%- &] 2534[s5;:Ctrl`:`:IsDragAndDropSource`(`):%- [@(0.0.255) bool]_[* IsDragAndDropSource]()&] 2535[s2; Same as this `=`= GetDragAndDropSource().&] 2536[s3;%- &] 2537[s4;%- &] 2538[s5;:Ctrl`:`:IsDragAndDropTarget`(`):%- [@(0.0.255) bool]_[* IsDragAndDropTarget]()&] 2539[s2; Same as this `=`= GetDragAndDropTarget().&] 2540[s3;%- &] 2541[s4;%- &] 2542[s5;:Ctrl`:`:StdSampleSize`(`):%- [@(0.0.255) static] [_^Size^ Size]_[* StdSampleSize]()&] 2543[s2; Returns the best size of DoDragAndDrop sample parameter.&] 2544[s3;%- &] 2545[s4;%- &] 2546[s5;:Ctrl`:`:SetMinSize`(Size`):%- [@(0.0.255) void]_[* SetMinSize]([_^`:`:Size^ Size]_[*@3 s 2547z])&] 2548[s2;b17;a17; This method does nothing. It is a interface placeholder 2549to get Layout templates working `- in derived classes this can 2550be statically overloaded to receive minimal size of layout.&] 2551[s7;i1120;a17; [%-*C@3 sz]-|Minimal size of layout.&] 2552[s3;%- &] 2553[s4;%- &] 2554[s5;:Ctrl`:`:Csizeinit`(`):%- [@(0.0.255) static] [@(0.0.255) void]_[* Csizeinit]()&] 2555[s2;b17;a17; Sets zoom factor used to scale layouts (to scale zoomed 2556positioning methods like LeftPosZ). Horizontal distances are 2557scaled by sz.cx / bsz.cx, vertical by sz.cy / bsz.cy. If bsz 2558is Size(0, 0), default base size (based on standard Win32 GUI 2559font) is used. Note that U`+`+ sets scaling factor automatically 2560upon startup based on actual standard GUI font size.&] 2561[s7;i1120;a17; [%-*C@3 sz]-|Numerator of scaling factor.&] 2562[s7;i1120;a17; [%-*C@3 bsz]-|Denominator of scaling factor.&] 2563[s3;%- &] 2564[s4;%- &] 2565[s5;:Ctrl`:`:HorzLayoutZoom`(int`):%- [@(0.0.255) static] [@(0.0.255) int]_[* HorzLayoutZoo 2566m]([@(0.0.255) int]_[*@3 cx])&] 2567[s2;b17;a17; Performs horizontal scaling by actual scaling factor.&] 2568[s7;i1120;a17; [%-*C@3 cx]-|Distance to scale.&] 2569[s7;i1120;a17; [*/ Return value]-|Scaled distance.&] 2570[s3;%- &] 2571[s4;%- &] 2572[s5;:Upp`:`:Ctrl`:`:HorzLayoutZoomf`(double`):%- [@(0.0.255) double]_[* HorzLayoutZoomf]( 2573[@(0.0.255) double]_[*@3 cx])&] 2574[s2; Similar to HorzLayoutZoom, but with double precision.&] 2575[s3; &] 2576[s4;%- &] 2577[s5;:Ctrl`:`:VertLayoutZoom`(int`):%- [@(0.0.255) static] [@(0.0.255) int]_[* VertLayoutZoo 2578m]([@(0.0.255) int]_[*@3 cy])&] 2579[s2;b17;a17; Performs vertical scaling by actual scaling factor.&] 2580[s7;i1120;a17; [%-*C@3 cy]-|Distance to scale.&] 2581[s7;i1120;a17; [*/ Return value]-|Scaled distance.&] 2582[s3;%- &] 2583[s4;%- &] 2584[s5;:Ctrl`:`:LayoutZoom`(int`,int`):%- [@(0.0.255) static] [_^`:`:Size^ Size]_[* LayoutZoom 2585]([@(0.0.255) int]_[*@3 cx], [@(0.0.255) int]_[*@3 cy])&] 2586[s2;b17;a17; Performs scaling by actual scaling factor.&] 2587[s7;i1120;a17; [%-*C@3 cx]-|Horizontal distance.&] 2588[s7;i1120;a17; [%-*C@3 cy]-|Vertical distance.&] 2589[s7;i1120;a17; [*/ Return value]-|Scaled size.&] 2590[s3;%- &] 2591[s4;%- &] 2592[s5;:Ctrl`:`:LayoutZoom`(Size`):%- [@(0.0.255) static] [_^`:`:Size^ Size]_[* LayoutZoom]([_^`:`:Size^ S 2593ize]_[*@3 sz])&] 2594[s2;b17;a17; Performs scaling by actual scaling factor.&] 2595[s7;i1120;a17; [%-*C@3 sz]-|Size to scale.&] 2596[s7;i1120;a17; [*/ Return value]-|Scaled size.&] 2597[s3;%- &] 2598[s4;%- &] 2599[s5;:Ctrl`:`:NoLayoutZoom`(`):%- [@(0.0.255) static] [@(0.0.255) void]_[* NoLayoutZoom]()&] 2600[s2;b17;a17; Sets scaling factor to (1, 1). Same as SetZoomSize(Size(1, 26011), Size(1, 1)).&] 2602[s3; &] 2603[s4;%- &] 2604[s5;:Upp`:`:Ctrl`:`:SetUHDEnabled`(bool`):%- [@(0.0.255) void]_[* SetUHDEnabled]([@(0.0.255) b 2605ool]_[*@3 set])&] 2606[s2; Informs host platform that application is UHD ready. Default 2607is true. Disabling UHD mode has to be done before GUI`_APP`_MAIN, 2608e.g. in INITBLOCK.&] 2609[s3; &] 2610[s4;%- &] 2611[s5;:Upp`:`:Ctrl`:`:IsUHDEnabled`(`):%- [@(0.0.255) bool]_[* IsUHDEnabled]()&] 2612[s2; Returns the value set by SetUHDEnabled.&] 2613[s3;%- &] 2614[s4;%- &] 2615[s5;:Upp`:`:Ctrl`:`:SetDarkThemeEnabled`(bool`):%- [@(0.0.255) static] 2616[@(0.0.255) void]_[* SetDarkThemeEnabled]([@(0.0.255) bool]_[*@3 set]_`=_[@(0.0.255) true]) 2617&] 2618[s2; Hints coloring and skinning algorithms that the application 2619is ready to work in dark theme mode. Currently this enables dark 2620theme in Windows (with other platforms dark theme is enabled 2621by default). Default value is true. Disabling dark theme has 2622to be done before GUI`_APP`_MAIN, e.g. in INITBLOCK.&] 2623[s3; &] 2624[s4;%- &] 2625[s5;:Upp`:`:Ctrl`:`:IsDarkThemeEnabled`(`):%- [@(0.0.255) static] [@(0.0.255) bool]_[* IsDa 2626rkThemeEnabled]()&] 2627[s2; Returns the value set by SetDarkThemeEnabled.&] 2628[s3;%- &] 2629[s4; &] 2630[s5;K:Ctrl`:`:GetWorkArea`(`):%- [*^`:`:Rect^@(64) Rect][*@(64) _][* GetWorkArea][*@(64) ()]&] 2631[s2; Returns OS specific working area for the widget `- this is rectangle 2632in screen coordinates where application top`-level windows can 2633be placed `- the size of screen minus the size of any border 2634entities like the task`-bar. If widget is not associated with 2635the open window, returns the size of primary work area.&] 2636[s7;i1120;a17; [*/ Return value]-|Work area rectangle.&] 2637[s3;%- &] 2638[s4;%- &] 2639[s5;:Ctrl`:`:GetVirtualWorkArea`(`):%- [@(0.0.255) static] [_^`:`:Rect^ Rect]_[* GetVirtual 2640WorkArea]()&] 2641[s2;b17;a17; Returns the total size of all displays minus any border 2642entities.&] 2643[s3;%- &] 2644[s4;%- &] 2645[s5;:Ctrl`:`:GetVirtualScreenArea`(`):%- [@(0.0.255) static] [_^`:`:Rect^ Rect]_[* GetVirtu 2646alScreenArea]()&] 2647[s2;b17;a17; Returns the total size of all displays.&] 2648[s3;%- &] 2649[s4;%- &] 2650[s5;:Ctrl`:`:GetPrimaryWorkArea`(`):%- [@(0.0.255) static] [_^`:`:Rect^ Rect]_[* GetPrimary 2651WorkArea]()&] 2652[s2;b17;a17; Returns the size of primary work area `- primary screen 2653in Windows is the display with start menu.&] 2654[s3;%- &] 2655[s4;%- &] 2656[s5;:Ctrl`:`:GetPrimaryScreenArea`(`):%- [@(0.0.255) static] [_^`:`:Rect^ Rect]_[* GetPrima 2657ryScreenArea]()&] 2658[s2;b17;a17; Returns the size of primary screen `- primary screen 2659in Windows is the display with start menu.&] 2660[s3;%- &] 2661[s4;%- &] 2662[s5;:Ctrl`:`:GetWorkArea`(Point`):%- [@(0.0.255) static] [_^Rect^ Rect]_[* GetWorkArea]([_^Point^ P 2663oint]_[*@3 pt])&] 2664[s2; Returns the recangle of work area which contains [%-*@3 pt]. If 2665[%-*@3 pt] does not belong to any area, returns the primary work 2666area.&] 2667[s3; &] 2668[s4;%- &] 2669[s5;:Ctrl`:`:GetMouseWorkArea`(`):%- [@(0.0.255) static] [_^Rect^ Rect]_[* GetMouseWorkArea 2670]()&] 2671[s2; Returns the work are which contains mouse cursor. Same as GetWorkArea(GetMousePo 2672s()).&] 2673[s3;%- &] 2674[s4;%- &] 2675[s5;:Ctrl`:`:GetKbdDelay`(`):%- [@(0.0.255) static] [@(0.0.255) int]_[* GetKbdDelay]()&] 2676[s2;b17;a17; Returns delay of keyboard before autorepeat starts when 2677key is pressed.&] 2678[s7;i1120;a17; [*/ Return value]-|Time in ms.&] 2679[s3;%- &] 2680[s4;%- &] 2681[s5;:Ctrl`:`:GetKbdSpeed`(`):%- [@(0.0.255) static] [@(0.0.255) int]_[* GetKbdSpeed]()&] 2682[s2;b17;a17; Returns speed of autorepeat.&] 2683[s7;i1120;a17; [*/ Return value]-|Speed of autorepeat.&] 2684[s3;%- &] 2685[s4;%- &] 2686[s5;:Ctrl`:`:GetDefaultWindowRect`(`):%- [@(0.0.255) static] [_^`:`:Rect^ Rect]_[* GetDefau 2687ltWindowRect]()&] 2688[s2;b17;a17; Returns OS suggested rectangle of newly open window.&] 2689[s7;i1120;a17; [*/ Return value]-|Default window rectangle.&] 2690[s3;%- &] 2691[s4;%- &] 2692[s5;:Ctrl`:`:GetAppName`(`):%- [@(0.0.255) static] [_^`:`:String^ String]_[* GetAppName]()&] 2693[s7;i1120;a17; [*/ Return value]-|Name of application. Used by U`+`+ 2694in several places like Prompts.&] 2695[s3;%- &] 2696[s4;%- &] 2697[s5;:Ctrl`:`:SetAppName`(const String`&`):%- [@(0.0.255) static] [@(0.0.255) void]_[* SetAp 2698pName]([@(0.0.255) const]_[_^`:`:String^ String][@(0.0.255) `&]_[*@3 appname])&] 2699[s7;i1120;a17; [%-*C@3 appname]-|Adjusts application name.&] 2700[s3;%- &] 2701[s4;%- &] 2702[s5;:Ctrl`:`:Name`(`)const:%- [_^`:`:String^ String]_[* Name]()_[@(0.0.255) const]&] 2703[s2;b17;a17; Dumps diagnostic informations to standard log.&] 2704[s3;%- &] 2705[s4;%- &] 2706[s5;:Ctrl`:`:Dump`(Stream`&`)const:%- [@(0.0.255) virtual] [@(0.0.255) void]_[* Dump]([_^`:`:Stream^ S 2707tream][@(0.0.255) `&]_[*@3 s])_[@(0.0.255) const]&] 2708[s2;b17;a17;%- Dumps diagnostic informations to specified output 2709stream.&] 2710[s7;i1120;a17; [%-*C@3 s]-|Stream.&] 2711[s3;%- &] 2712[s4;%- &] 2713[s5;:Ctrl`:`:InitWin32`(HINSTANCE`):%- [@(0.0.255) static] [@(0.0.255) void]_[* InitWin32]( 2714HINSTANCE_[*@3 hinst])&] 2715[s2;b17;a17; Flushes all drawing operations to screen (what it EXACTLY 2716does is platform specific).&] 2717[s3;%- &] 2718[s4;%- &] 2719[s5;:Ctrl`:`:GuiSleep`(int`):%- [@(0.0.255) static] [@(0.0.255) void]_[* GuiSleep]([@(0.0.255) i 2720nt]_[*@3 ms])&] 2721[s2;b17;a17; Sleeps (while allowing other applications or threads 2722to run) for at least [*@3 ms] milliseconds or until new input event 2723is available. [*/ This method can only be invoked in the main thread.]&] 2724[s7;i1120;a17; [%-*@3 ms]-|Time to sleep.&] 2725[s3; &] 2726[s4;%- &] 2727[s5;:Upp`:`:Ctrl`:`:Call`(Upp`:`:Function`<void`(`)`>`):%- [@(0.0.255) static] 2728[@(0.0.255) void]_[* Call]([_^Upp`:`:Function^ Function]<[@(0.0.255) void]_()>_[*@3 cb])&] 2729[s2; Executes a callback in the main thread (the one responsible 2730for GUI). It works by posting callback into timer queue (with 2731zero delay), then waits its completion using Semaphore. Main 2732GUI thread has to run timer queue management for callback to 2733be executed (by running event`-loop (TopWindow`::Run) or ProcessEvents). 2734Warning: Call temporarily unlocks GuiLock (if locked) so that 2735the main thread can run on GUI, this is possible source of race`-conditions 2736(GuiLock is relocked after call completes). Be prepared that 2737some other code can run on GUI between call to Call and cb being 2738executed!&] 2739[s3; &] 2740[s4;%- &] 2741[s5;:Ctrl`:`:IsShutdownThreads`(`):%- [@(0.0.255) static] [@(0.0.255) bool]_[* IsShutdownTh 2742reads]()&] 2743[s2; Same as Thread`::IsShutdownThreads. Used to signal non`-main 2744threads that the program is about to end, so that non`-main threads 2745should terminate.&] 2746[s3;%- &] 2747[s4;%- &] 2748[s5;:Ctrl`:`:ShutdownThreads`(`):%- [@(0.0.255) static] [@(0.0.255) void]_[* ShutdownThread 2749s]()&] 2750[s2; Similiar to Thread`::ShutdownThreads, but as part of waiting 2751for threads to finish calls ProcessEvents so that any Call methods 2752can finish.&] 2753[s3;%- &] 2754[s4;%- &] 2755[s5;:Ctrl`:`:GetEventId`(`):%- [@(0.0.255) static] [_^int64^ int64]_[* GetEventId]()&] 2756[s2; This function is guaranteed to return the same number while 2757single input event (mouse event or keyboard event) is processed. 2758This is helpful in certain caching situations `- e.g. if you 2759want to lazy fetch some data, but only once per input event.&] 2760[s0;%- &] 2761[s0;%- &] 2762[ {{10000@(113.42.0) [s0; [*@7;4 Ctrl`::Logc]]}}&] 2763[s3; &] 2764[s1;:Ctrl`:`:Logc`:`:class:%- [@(0.0.255)3 class][3 _][*3 Logc]&] 2765[s9; This nested class serves as either vertical or horizontal part 2766of logical position.&] 2767[s3; &] 2768[s0;%- &] 2769[ {{10000F(128)G(128)@1 [s0; [* Constructor Detail]]}}&] 2770[s3;%- &] 2771[s5;:Ctrl`:`:Logc`:`:Logc`(int`,int`,int`):%- [* Logc]([@(0.0.255) int]_[*@3 al], 2772[@(0.0.255) int]_[*@3 a], [@(0.0.255) int]_[*@3 b])&] 2773[s7;l352;i1120;a17; [%-*C@3 al]-|Alignment type. Determines what other 2774parameters mean. &] 2775[s7;l352;i1120;a17; [%-*C@3 a]-|First value.&] 2776[s7;l352;i1120;a17; [%-*C@3 b]-|Second value.&] 2777[s3;%- &] 2778[s4;%- &] 2779[s5;:Ctrl`:`:Logc`:`:Logc`(`):%- [* Logc]()&] 2780[s2; Default constructor. Sets Logc to the empty state.&] 2781[s3; &] 2782[s0;%- &] 2783[ {{10000F(128)G(128)@1 [s0; [* Public Member List]]}}&] 2784[s3;%- &] 2785[s5;:Ctrl`:`:Logc`:`:LSGN`(dword`):%- [@(0.0.255) static] [@(0.0.255) int]_[* LSGN]([_^dword^ d 2786word]_[*@3 d])&] 2787[s7;l352;i1120;a17; [%-*C@3 q]-|Logc to compare with.&] 2788[s7;l352;i1120;a17; [*/ Return value]-|True when equal.&] 2789[s3; &] 2790[s4;%- &] 2791[s5;:Ctrl`:`:Logc`:`:operator`!`=`(Ctrl`:`:Logc`)const:%- [@(0.0.255) bool]_[* operator!`= 2792]([_^Ctrl`:`:Logc^ Logc]_[*@3 q])_[@(0.0.255) const]&] 2793[s7;l352;i1120;a17; [%-*C@3 q]-|Logc to compare with.&] 2794[s7;l352;i1120;a17; [*/ Return value]-|True when not equal.&] 2795[s3; &] 2796[s4;%- &] 2797[s5;:Ctrl`:`:Logc`:`:GetAlign`(`)const:%- [@(0.0.255) int]_[* GetAlign]()_[@(0.0.255) const 2798]&] 2799[s7;l352;i1120;a17; [*/ Return value]-|Alignment type.&] 2800[s3; &] 2801[s4;%- &] 2802[s5;:Ctrl`:`:Logc`:`:GetA`(`)const:%- [@(0.0.255) int]_[* GetA]()_[@(0.0.255) const]&] 2803[s7;l352;i1120;a17; [*/ Return value]-|First value.&] 2804[s3; &] 2805[s4;%- &] 2806[s5;:Ctrl`:`:Logc`:`:GetB`(`)const:%- [@(0.0.255) int]_[* GetB]()_[@(0.0.255) const]&] 2807[s7;l352;i1120;a17; [*/ Return value]-|Second value.&] 2808[s3; &] 2809[s4;%- &] 2810[s5;:Ctrl`:`:Logc`:`:SetAlign`(int`):%- [@(0.0.255) void]_[* SetAlign]([@(0.0.255) int]_[*@3 a 2811lign])&] 2812[s2;l352;b17;a17;%- Sets alignment type.&] 2813[s7;l352;i1120;a17; [%-*C@3 align]-|Alignment type.&] 2814[s3; &] 2815[s4;%- &] 2816[s5;:Ctrl`:`:Logc`:`:SetA`(int`):%- [@(0.0.255) void]_[* SetA]([@(0.0.255) int]_[*@3 a])&] 2817[s2;l352;b17;a17; Sets first value.&] 2818[s7;l352;i1120;a17; [%-*C@3 a]-|Value.&] 2819[s3; &] 2820[s4;%- &] 2821[s5;:Ctrl`:`:Logc`:`:SetB`(int`):%- [@(0.0.255) void]_[* SetB]([@(0.0.255) int]_[*@3 b])&] 2822[s2;l352;b17;a17; Sets second value.&] 2823[s7;l352;i1120;a17; [%-*C@3 b]-|Value.&] 2824[s3; &] 2825[s4;%- &] 2826[s5;:Ctrl`:`:Logc`:`:IsEmpty`(`)const:%- [@(0.0.255) bool]_[* IsEmpty]()_[@(0.0.255) const]&] 2827[s7;l352;i1120;a17; [*/ Return value]-|True if Logc is empty.&] 2828[s3; &] 2829[s0; &] 2830[s0; &] 2831[s0;%- &] 2832[ {{10000@(113.42.0) [s0; [*@7;4 Ctrl`::LogPos]]}}&] 2833[s3; &] 2834[s5;:`:`:Ctrl`:`:LogPos`:`:struct:%- [*@(0.0.255) struct][*@(64) _][* LogPos]&] 2835[s9; This nested class combines two Logc value into complete logical 2836position.&] 2837[s3; &] 2838[s0;%- &] 2839[ {{10000F(128)G(128)@1 [s0; [* Constructor Detail]]}}&] 2840[s3;%- &] 2841[s5;:Ctrl`:`:LogPos`:`:LogPos`(Ctrl`:`:Logc`,Ctrl`:`:Logc`):%- [* LogPos]([_^Ctrl`:`:Logc^ L 2842ogc]_[*@3 x], [_^Ctrl`:`:Logc^ Logc]_[*@3 y])&] 2843[s7;l352;i1120;a17; [%-*C@3 x]-|Horizontal Logc.&] 2844[s7;l352;i1120;a17; [%-*C@3 y]-|Vertical Logc.&] 2845[s3; &] 2846[s4;%- &] 2847[s5;:Ctrl`:`:LogPos`:`:LogPos`(`):%- [* LogPos]()&] 2848[s2; Default constructor. Sets both Logc empty.&] 2849[s3; &] 2850[s0;%- &] 2851[ {{10000F(128)G(128)@1 [s0; [* Public Member List]]}}&] 2852[s3;%- &] 2853[s5;:Ctrl`:`:LogPos`:`:operator`=`=`(Ctrl`:`:LogPos`)const:%- [@(0.0.255) bool]_[* operat 2854or`=`=]([_^Ctrl`:`:LogPos^ LogPos]_[*@3 b])_[@(0.0.255) const]&] 2855[s7;l352;i1120;a17; [%-*C@3 b]-|LogPos to compare with.&] 2856[s7;l352;i1120;a17; [*/ Return value]-|True when equal.&] 2857[s3; &] 2858[s4;%- &] 2859[s5;:Ctrl`:`:LogPos`:`:operator`!`=`(Ctrl`:`:LogPos`)const:%- [@(0.0.255) bool]_[* operat 2860or!`=]([_^Ctrl`:`:LogPos^ LogPos]_[*@3 b])_[@(0.0.255) const]&] 2861[s7;l352;i1120;a17; [%-*C@3 b]-|LogPos to compare with.&] 2862[s7;l352;i1120;a17; [*/ Return value]-|True when equal.&] 2863[s3; &] 2864[s4;%- &] 2865[s5;:Ctrl`:`:LogPos`:`:x:%- [_^Ctrl`:`:Logc^ Logc]_[* x]&] 2866[s2; Horizontal Logc.&] 2867[s3; &] 2868[s4;%- &] 2869[s5;:Ctrl`:`:LogPos`:`:y:%- [_^Ctrl`:`:Logc^ Logc]_[* y]&] 2870[s2; Vertical Logc.&] 2871[s3; &] 2872[s0; ]]