IForm



Describes form.

You can find more information in comments below. Overrided methods can be found in corresponding base interface.

class IForm : public virtual IClass
{
public:
    // Events from child controls 
    void(*OnChildStyleChange)(IForm *sender, IControl *control); // Event called when style of child control has been changed 
    void(*OnChildFontChange)(IForm *sender, IControl *control); // Event called when font of child control has been changed 
    void(*OnChildTransform)(IForm *sender, IControl *control); // Event called when child control has been transformed 
    void(*OnChildResize)(IForm *sender, IControl *control); // Event called when child control has been resized 
    void(*OnChildShow)(IForm *sender, IControl *control); // Event called when child control has been shown 
    void(*OnChildHide)(IForm *sender, IControl *control); // Event called when child control has been hidden 
    void(*OnChildEnable)(IForm *sender, IControl *control); // Event called when child control has been enabled 
    void(*OnChildDisable)(IForm *sender, IControl *control); // Event called when child control has been disabled 
    void(*OnChildBeforeTransform)(IForm *sender, IControl *control, bool &allowed) = 0; // Event called before applying transformation to control. Set allowed to false to forbid the change 
    void(*OnChildBeforeResize)(IForm *sender, IControl *control, bool &allowed) = 0; // Event called before resizing control. Set allowed to false to forbid the change 
    void(*OnChildBeforeShow)(IForm *sender, IControl *control, bool &allowed) = 0; // Event called before showing control. Set allowed to false to forbid the change 
    void(*OnChildBeforeHide)(IForm *sender, IControl *control, bool &allowed) = 0; // Event called before hiding control. Set allowed to false to forbid the change 
    void(*OnChildBeforeEnable)(IForm *sender, IControl *control, bool &allowed) = 0; // Event called before enabling control. Set allowed to false to forbid the change 
    void(*OnChildBeforeDisable)(IForm *sender, IControl *control, bool &allowed) = 0; // Event called before disabling control. Set allowed to false to forbid the change 

    // State change events 
    void(*OnResize)(IForm *sender); // Event called when the form has been resized 
    void(*OnTransform)(IForm *sender); // Event called when the form has been transformed(moved) 
    void(*OnTransformControls)(IForm *sender); // Event called when child control transformation has been changed 
    void(*OnStyleChange)(IForm *sender); // Event called when style has been changed 
    void(*OnFontChange)(IForm *sender); // Event called when font has been changed 

    // Component events 
    void(*OnComponentAttach)(IForm *sender, IComponent *component); // Event called when component has been attached 
    void(*OnComponentDetach)(IForm *sender, IComponent *component); // Event called when component has been detached 

    // Control events 
    void(*OnControlAttach)(IForm *sender, IControl *control); // Event called when control has been attached 
    void(*OnControlDetach)(IForm *sender, IControl *control); // Event called when control has been detached 
    void(*OnControlSetModal)(IForm *sender, IControl *control); // Event called when control has got modal state 
    void(*OnControlKillModal)(IForm *sender, IControl *control); // Event called when control has lost modal state 
    void(*OnControlSetFocus)(IForm *sender, IControl *control, const MessageFocus &m); // Event called when control has became focused 
    void(*OnControlKillFocus)(IForm *sender, IControl *control); // Event called when control has lost focus 
    void(*OnControlMouseHover)(IForm *sender, IControl *control, const MessagePosition &m); // Event called when control has became hovered 
    void(*OnControlMouseLeave)(IForm *sender, IControl *control); // Event called when control has become unhovered 
    void(*OnControlSetCaptureKeyboard)(IForm *sender, IControl *control); // Event called when control has got capture keyboard input 
    void(*OnControlKillCaptureKeyboard)(IForm *sender, IControl *control); // Event called when control has lost capture keyboard input 
    void(*OnControlSetCaptureMouse)(IForm *sender, IControl *control); // Event called when control has got capture mouse input 
    void(*OnControlKillCaptureMouse)(IForm *sender, IControl *control); // Event called when control has lost capture mouse input 
    void(*OnControlActivate)(IForm *sender, IControl *control); // Event called when control has became active 
    void(*OnControlDeactivate)(IForm *sender, IControl *control); // Event called when control has lost active state 

    // Paint events 
    void(*OnPaint)(IForm *sender, const MessagePaint &m, bool &draw_children); // Event called at the beginning of drawing the form 
    void(*OnPaintEnd)(IForm *sender, const MessagePaint &m); // Event called at the end of drawing the form and controls 

    // Keyboard input events 
    void(*OnKeyDown)(IForm *sender, const MessageKey &m); // Event called when keyboard key has been down 
    void(*OnKeyUp)(IForm *sender, const MessageKey &m); // Event called when keyboard key has been released 
    void(*OnChar)(IForm *sender, const MessageChar &m); // Event called when character has been received via keyboard input 
    void(*OnDeadChar)(IForm *sender, const MessageChar &m); // Event called when composite character has been received via keyboard input 

    // Mouse input events 
    void(*OnMouseHover)(IForm *sender, const MessageMouse &m); // Event called when mouse pointer hover the form 
    void(*OnMouseLeave)(IForm *sender); // Event called when mouse pointer leaves the form 
    void(*OnMouseMove)(IForm *sender, const MessageMouse &m); // Event called when mouse pointer is moving 
    void(*OnLeftMouseButtonDown)(IForm *sender, const MessageMouse &m); // Event called when left mouse button has been down 
    void(*OnLeftMouseButtonUp)(IForm *sender, const MessageMouse &m); // Event called when left mouse button has been released 
    void(*OnLeftMouseButtonDoubleClick)(IForm *sender, const MessageMouse &m); // Event called when left mouse button has been double clicked 
    void(*OnRightMouseButtonDown)(IForm *sender, const MessageMouse &m); // Event called when right mouse button has been down 
    void(*OnRightMouseButtonUp)(IForm *sender, const MessageMouse &m); // Event called when right mouse button has been released 
    void(*OnRightMouseButtonDoubleClick)(IForm *sender, const MessageMouse &m); // Event called when right mouse button has been double clicked 
    void(*OnMiddleMouseButtonDown)(IForm *sender, const MessageMouse &m); // Event called when middle mouse button has been down 
    void(*OnMiddleMouseButtonUp)(IForm *sender, const MessageMouse &m); // Event called when middle mouse button has been released 
    void(*OnMiddleMouseButtonDoubleClick)(IForm *sender, const MessageMouse &m); // Event called when middle mouse button has been double clicked 
    void(*OnMouseVerticalWheel)(IForm *sender, const MessageMouseWheel &m); // Event called when mouse vertical wheel has been scrolled 
    void(*OnMouseHorizontalWheel)(IForm *sender, const MessageMouseWheel &m); // Event called when mouse horizontal wheel has been scrolled 

    // Other input events 
    void(*OnDropFiles)(IForm *sender, const MessageDropFiles &m, bool &accepted); // Event called when files has been dropped over the form 
    void(*OnHotkey)(IForm *sender, const MessageHotkey &m); // Event called when registered combination of keys has been detected 
    void(*OnGestureZoom)(IForm *sender, const MessagePosition &m); // Event called on gestures zoom 
    void(*OnGesturePan)(IForm *sender, const MessagePosition &m); // Event called on gestures pan 
    void(*OnGestureRotate)(IForm *sender, const MessagePosition &m); // Event called on gestures rotate 
    void(*OnGestureTwoFingerTap)(IForm *sender, const MessagePosition &m); // Event called on gestures two finger tap 
    void(*OnGesturePressAndTap)(IForm *sender, const MessagePosition &m); // Event called on gestures press and tap 
    void(*OnGestureNotify)(IForm *sender); // Event called on gestures notify 
    void(*OnTouch)(IForm *sender, const MessageTouch &m); // Event called on touch 

    // Application events 
    void(*OnApplicationActivate)(IForm *sender); // Event called when application has been activated 
    void(*OnApplicationDeactivate)(IForm *sender); // Event called when application has been deactivated 
    void(*OnQueryEndSession)(IForm *sender, bool &restricted); // Event called when system tries to end user session 
    void(*OnQueryOpen)(IForm *sender, bool &restricted); // Event called when query is opened 
    void(*OnEndSession)(IForm *sender, const MessageEndSession &m); // Event called when user session is ending 
    void(*OnDeviceModeChange)(IForm *sender); // Event called when device mode has been changed 
    void(*OnTimeChange)(IForm *sender); // Event called when system time has been changed 
    void(*OnInputLanguageChangeRequest)(IForm *sender, bool &restricted); // Event called when system queries if language could be changed 
    void(*OnInputLanguageChange)(IForm *sender); // Event called when language has been changed 
    void(*OnDisplayChange)(IForm *sender, const MessageSize &m); // Event called when display settings has been changed 
    void(*OnThemeChange)(IForm *sender); // Event called when theme has been changed 
    void(*OnClipboardUpdate)(IForm *sender); // Event called when clipboard data has been changed 
    void(*OnTranslateChange)(IForm *sender); // Event called when application gets information about changes in translation matrix 

    // Window events 
    void(*OnDestroy)(IForm *sender); // Event called when form is about to be destroyed 
    void(*OnActivate)(IForm *sender, const MessageWindowActivate &m); // Event called when application has been activated 
    void(*OnDeactivate)(IForm *sender); // Event called when application has been deactivated 
    void(*OnSetFocus)(IForm *sender); // Event called when form has got focus 
    void(*OnKillFocus)(IForm *sender); // Event called when form has lost focus 
    void(*OnEnable)(IForm *sender); // Event called when form became enabled 
    void(*OnDisable)(IForm *sender); // Event called when form became disabled 
    void(*OnClose)(IForm *sender, CloseAction &action); // Event called when user tries to close the form. Action could be changed to prevent default behaviour 
    void(*OnShow)(IForm *sender); // Event called when form has been shown 
    void(*OnHide)(IForm *sender); // Event called when form has been hidden 
    void(*OnMove)(IForm *sender, const MessagePosition &m); // Event called when form is moving 
    void(*OnRestore)(IForm *sender, const MessageSize &m); // Event called when form has been restored 
    void(*OnMinimize)(IForm *sender, const MessageSize &m); // Event called when form has been minimized 
    void(*OnMaximize)(IForm *sender, const MessageSize &m); // Event called when form has been maximized 
    void(*OnResizing)(IForm *sender, const MessageWindowResizing &m); // Event called when form is being resized 
    void(*OnMoving)(IForm *sender, const MessageRect &m); // Event called when form is being moved 
    void(*OnEnterSizeMove)(IForm *sender); // Event called when form has entered resizing and moving state 
    void(*OnExitSizeMove)(IForm *sender); // Event called when form has existed resizing and moving state 
    void(*OnHScroll)(IForm *sender, const MessageWindowScroll &m); // Event called when horizontal scroll has happened 
    void(*OnVScroll)(IForm *sender, const MessageWindowScroll &m); // Event called when vertical scroll has happened 
    void(*OnLoseCapture)(IForm *sender); // Event called when form has lost capture 

    // Dialog box events 
    void(*OnDialogBoxActivate)(IForm *sender, IDialogBox *control); // Event called when dialog box becomes active 
    void(*OnDialogBoxDeactivate)(IForm *sender, IDialogBox *control); // Event called when dialog box loses active state 

    // Clipboard events 
    void(*OnPasteString)(IForm *sender, const MessagePasteString &m); // Event called when a string to paste becomes available after paste request 

    virtual IRenderer *getRenderer() = 0;
    virtual IHint *getHint() = 0; // Return hint. If not assigned, creates default one 
    virtual IStyle *getStyle() = 0; // Return style. By default nullptr 
    virtual IFont *getFont() = 0; // Return font. If not assigned, creates default one 
    virtual ICaret *getCaret() = 0; // Return caret. If not assigned, creates default one 
    virtual IControl *getModalControl() = 0; // Return current modal control 
    virtual IControl *getFocusedControl() = 0; // Return current focused control 
    virtual IControl *getCaptureKeyboardControl() = 0; // Return current control which captures keyboard input 
    virtual IControl *getCaptureMouseControl() = 0; // Return current control which captures mouse input 
    virtual IControl *getHoveredControl() = 0; // Return current hovered control 
    virtual IControl *getActiveControl() = 0; // Return current active control 
    virtual IControl *getInputControl() = 0; // Return control which handle all input which was not processed by other controls. It is used by controls which customize borders and caption to handle moving, resizing and other operations 
    virtual int getControlCount(const bool total = false) = 0; // Return control count. Either only direct children or all in hierarchy 
    virtual IControl *getControl(const int index) = 0; // Return control by index 
    virtual IControl *getControl(const String &name) = 0; // Return control by name 
    virtual IControl *getControl(const PointF &position) = 0; // Return control at specified position. Position is in form client area coordinates 
    virtual int getControlIndex(IControl *control) = 0; // Return control index in list or -1 
    virtual int getComponentCount() = 0; // Return component count 
    virtual IComponent *getComponent(const int index) = 0; // Return component by index 
    virtual IComponent *getComponent(const String &name) = 0; // Return component by name 
    virtual int getComponentIndex(IComponent *component) = 0; // Return component index in list or -1 
    virtual ITransform *getTransform() = 0; // Return transformation 
    virtual ITransform *getTransformControls() = 0; // Return child controls transformation 
    virtual CursorType getCursor() = 0; // Return cursor type. By default Arrow 
    virtual String getHintText() = 0; // Return hint text. By default empty 
    virtual float getHintDelay() = 0; // Return hint appearance delay(in seconds). By default 0.5 seconds 
    virtual PointF getHintShift() = 0; // Return hint shift. By default 0, 20 
    virtual Color getBackgroundColor() = 0; // Return background color. By default {240, 240, 240, 255} 
    virtual bool isShowHint() = 0; // Return whether to show hint. By default true 
    virtual bool isFocusByLMB() = 0; // Return whether to focus controls by left mouse button. By default true 
    virtual bool isFocusByRMB() = 0; // Return whether to focus controls by right mouse button. By default true 
    virtual bool isFocusByMMB() = 0; // Return whether to focus controls by middle mouse button. By default true 
    virtual bool isFocusByTab() = 0; // Return whether to focus controls by Tab and Shift+Tab. By default true 
    virtual bool isInterceptEnable() = 0; // Return whether interception mechanisms is enabled. By default false 
    virtual int getTaskCount() = 0; // Return number of tasks in list 
    virtual ITask *getTask(const int index) = 0; // Return task by index 
    virtual Rect getBorderWidth() = 0; // Return border width which is used only when aligning controls. By default {0, 0, 0, 0}. Borders space could be used to draw custom borders and caption area(popup style form/window is also might be used to prevent appearing of default borders and caption) 
    virtual Point getDPI() = 0; // Return DPI for which form controls' parameters where adopted. { 96, 96 } by default 
    virtual IDialogBox *getActiveDialogBox() = 0; // Return active dialog box 
    virtual IFormListener *getListener() = 0; // Return assigned listener 

    // Window getters 
    virtual bool isVisible() = 0; // Return whether is visible 
    virtual bool isEnabled() = 0; // Return whether is enabled 
    virtual bool isAcceptDragAndDrop() = 0; // Return whether accepts drag and drop 
    virtual bool isAcceptDropFiles() = 0; // Return whether accepts drop files 
    virtual String getCaption() = 0; // Return caption 
    virtual Rect getRect() = 0; // Return rectangle in screen coordinates 
    virtual Point getSize() = 0; // Return width and height 
    virtual Point getPosition() = 0; // Return position in screen coordinates 
    virtual int getLeft() = 0; // Return left position in screen coordinates 
    virtual int getTop() = 0; // Return top position in screen coordinated 
    virtual int getWidth() = 0; // Return width 
    virtual int getHeight() = 0; // Return height 
    virtual Rect getClientRect() = 0; // Return client rectangle 
    virtual Point getClientSize() = 0; // Return client area size 
    virtual int getClientWidth() = 0; // Return client area width 
    virtual int getClientHeight() = 0; // Return client area height 
    virtual WindowState getState() = 0; // Return state 
    virtual CreateParams getCreateParams() = 0; // Return window creation parameters 
    virtual bool hasBorder() = 0; // Return whether form has standard border 
    virtual bool hasCaption() = 0; // Return whether form has standard caption area 
    virtual bool hasDialogFrame() = 0; // Return whether form has standard dialog frame 
    virtual bool hasHorizontalScroll() = 0; // Return whether form has standard horizontal scrollbar 
    virtual bool hasVerticalScroll() = 0; // Return whether form has standard vertical scrollbar 
    virtual bool hasMaximizeBox() = 0; // Return whether form has standard minimize button 
    virtual bool hasMinimizeBox() = 0; // Return whether form has standard maximize button 
    virtual bool hasSizeBox() = 0; // Return whether form can be resized 
    virtual bool hasSystemMenu() = 0; // Return whether form has standard system menu 
    virtual bool hasClientEdge() = 0; // Return whether form has standard client edge 
    virtual bool hasContextHelp() = 0; // Return whether form has standard context help 
    virtual bool hasDialogModalFrame() = 0; // Return whether form has standard dialog modal frame 
    virtual bool hasStaticEdge() = 0; // Return whether form has standard static edge 
    virtual bool hasWindowEdge() = 0; // Return whether form has standard window edge 
    virtual bool isPopup() = 0; // Return whether form is popup 
    virtual bool isTabStop() = 0; // Return whether form is a control which could be activated by Tab 
    virtual bool isMDIChild() = 0; // Return whether form is MDI child 
    virtual bool isToolWindow() = 0; // Return whether form is tool one 
    virtual bool isTopMost() = 0; // Return whether form is always on top of other ones 

    virtual bool setHint(IHint *value) = 0; // Assign hint 
    virtual bool setStyle(IStyle *value) = 0; // Assign style 
    virtual bool setFont(IFont *value, const bool copy = true) = 0; // Assign font 
    virtual bool setCaret(ICaret *value) = 0; // Assign caret 
    virtual bool setModalControl(IControl *value) = 0; // Set new modal control. nullptr clears history of modal control changes. When control wants just release modal state and pass modal state to previously modal control, it should call ReleaseModal() method 
    virtual bool setFocusedControl(IControl *value) = 0; // Set new focused control 
    virtual bool setActiveControl(IControl *value) = 0; // Set new active control 
    virtual bool setInputControl(IControl *value) = 0; // Set control which handle all input which was not processed by other controls. May be nullptr. It is used by controls which customize borders and caption to handle moving, resizing and other operations. Usually called by such a control itself at moment of adding to form 
    virtual bool setTransformControls(ITransform *value) = 0; // Set child controls transformation 
    virtual bool setCursor(const CursorType value) = 0; // Set cursor type 
    virtual bool setHintText(const String &value) = 0; // Set hint text 
    virtual bool setHintDelay(const float value) = 0; // Set hint appearance delay 
    virtual bool setHintShift(const PointF &value) = 0; // Set hint shift 
    virtual bool setBackgroundColor(const Color &value) = 0; // Set background color 
    virtual bool setShowHint(const bool value) = 0; // Set whether hint should be shown 
    virtual bool setFocusByLMB(const bool value) = 0; // Set whether controls could be focused by left mouse button 
    virtual bool setFocusByMMB(const bool value) = 0; // Set whether controls could be focused by middle mouse button 
    virtual bool setFocusByRMB(const bool value) = 0; // Set whether controls could be focused by right mouse button 
    virtual bool setFocusByTab(const bool value) = 0; // Set whether controls could be focused by Tab and Shift+Tab 
    virtual bool setInterceptEnable(const bool value) = 0; // Set whether intercepts are enabled 
    virtual bool setBorderWidth(const Rect &value) = 0; // Set border width. Used in alignment. Border could be used for drawing custom borders and caption area. When you add control which customizes form borders and caption area it sets this property 
    virtual void setService(IFormService *value, const bool release_prev) = 0; // Set new service. Use only compatible services and avoid setting empty value 
    virtual bool setDPI(const Point &value) = 0; // Adopt form controls' parameters for new DPI 
    virtual bool setActiveDialogBox(IDialogBox *value) = 0; // Set active dialog box. nullptr clears dialog box activity history 
    virtual void setListener(IFormListener *value) = 0; // Assign listener 

    // Window setters 
    virtual bool setVisible(const bool value) = 0; // Show/hide 
    virtual bool setEnabled(const bool value) = 0; // Enable/disable 
    virtual bool setAcceptDrawAndDrop(const bool value) = 0; // Set whether drag and drop is accepted 
    virtual bool setAcceptDropFiles(const bool value) = 0; // Set whether drop files is accepted 
    virtual bool setCaption(const String &value) = 0; // Set caption 
    virtual bool setRect(const Rect &value) = 0; // Set position and size 
    virtual bool setSize(const Point &value) = 0; // Set size 
    virtual bool setPosition(const Point &value) = 0; // Set position 
    virtual bool setLeft(const int value) = 0; // Set left coordinate 
    virtual bool setTop(const int value) = 0; // Set top coordinate 
    virtual bool setWidth(const int value) = 0; // Set width 
    virtual bool setHeight(const int value) = 0; // Set height 
    virtual bool setClientSize(const Point &value) = 0; // Set client area size 
    virtual bool setState(const WindowState value) = 0; // Set state 
    virtual bool setModalResult(const ModalResult value) = 0; // Set modal result. Only work when form is show by ShowModal() 
    virtual bool setWindowPosition(const WindowPosition value) = 0; // Set window position 
    virtual void setCreateParams(const CreateParams &value) = 0; // Set window creation parameters 
    virtual bool setHasBorder(const bool value) = 0; // Set whether form has standard border. Work only if called before form window creation 
    virtual bool setHasCaption(const bool value) = 0; // Set whether form has standard caption area. Work only if called before form window creation 
    virtual bool setHasDialogFrame(const bool value) = 0; // Set whether form has standard dialog frame. Work only if called before form window creation 
    virtual bool setHasHorizontalScroll(const bool value) = 0; // Set whether form has standard horizontal scrollbar. Work only if called before form window creation 
    virtual bool setHasVerticalScroll(const bool value) = 0; // Set whether form has standard vertical scrollbar. Work only if called before form window creation 
    virtual bool setHasMaximizeBox(const bool value) = 0; // Set whether form has standard minimize button. Work only if called before form window creation 
    virtual bool setHasMinimizeBox(const bool value) = 0; // Set whether form has standard maximize button. Work only if called before form window creation 
    virtual bool setHasSizeBox(const bool value) = 0; // Set whether form can be resized. Work only if called before form window creation 
    virtual bool setHasSystemMenu(const bool value) = 0; // Set whether form has standard system menu. Work only if called before form window creation 
    virtual bool setHasClientEdge(const bool value) = 0; // Set whether form has standard client edge. Work only if called before form window creation 
    virtual bool setHasContextHelp(const bool value) = 0; // Set whether form has standard context help. Work only if called before form window creation 
    virtual bool setHasDialogModalFrame(const bool value) = 0; // Set whether form has standard dialog modal frame. Work only if called before form window creation 
    virtual bool setHasStaticEdge(const bool value) = 0; // Set whether form has standard static edge. Work only if called before form window creation 
    virtual bool setHasWindowEdge(const bool value) = 0; // Set whether form has standard window edge. Work only if called before form window creation 
    virtual bool setIsPopup(const bool value) = 0; // Set whether form is popup. Work only if called before form window creation 
    virtual bool setIsTabStop(const bool value) = 0; // Set whether form is a control which could be activated by Tab. Work only if called before form window creation 
    virtual bool setIsMDIChild(const bool value) = 0; // Set whether form is MDI child. Work only if called before form window creation 
    virtual bool setIsToolWindow(const bool value) = 0; // Set whether form is tool one. Work only if called before form window creation 
    virtual bool setIsTopMost(const bool value) = 0; // Set whether form is always on top of other ones. Work only if called before form window creation 

    // Components 
    virtual bool AttachComponent(IComponent *component) = 0; // Add component 
    virtual bool DeleteComponent(const int index) = 0; // Delete and destroy component by index 
    virtual bool DeleteComponent(IComponent *component) = 0; // Delete and destroy specified component 
    virtual bool DeleteComponents() = 0; // Delete and destroy all components 
    virtual bool DetachComponent(IComponent *component) = 0; // Detach but don't destroy specified component 

    // Controls 
    virtual bool AttachControl(IControl *control) = 0; // Add control 
    virtual bool InsertControl(IControl *control, const int before) = 0; // Insert control before specified position 
    virtual bool DeleteControl(const int index) = 0; // Delete and destroy control by index 
    virtual bool DeleteControl(IControl *control) = 0; // Delete and destroy specified control 
    virtual bool DeleteControls() = 0; // Delete and destroy all controls 
    virtual bool DetachControl(IControl *control) = 0; // Delete but don't destroy specified control 
    virtual IControl *FindControl(const String &name, IControl *exclude = nullptr) = 0; // Find control with specified name in entire hierarchy 
    virtual bool FocusPrevControl() = 0; // Focus prev control(prev by tab index) 
    virtual bool FocusNextControl() = 0; // Focus next control(next by tab index) 
    virtual bool CaptureKeyboard(IControl *control) = 0; // Send all keyboard input to specified control. If set to empty it will clear capture queue 
    virtual bool CaptureMouse(IControl *control, const bool system_capture) = 0; // Send all mouse input to specified control. If set to empty it will clear capture queue 
    virtual void ReleaseCaptureKeyboard() = 0; // Release keyboard capture and set to prev one(if exists) 
    virtual void ReleaseCaptureMouse() = 0; // Release mouse capture and set to prev one(if exists) 
    virtual void UpdateHoveredControl() = 0; // Update hovered/unhovered state using current mouse pointer position 
    virtual void ReleaseModal() = 0; // Pass modal state to previously modal control. If control is derived from CDialogBox there is usually no need in using this method. Changing dialog boxes is handled by form 

    // Paint 
    virtual void LockRepaint() = 0; // Stop real drawing. Could be called many times 
    virtual void UnlockRepaint() = 0; // Resume real drawing. Should be called the same amount of times as LockRepaint to resume real drawings 
    virtual void Repaint() = 0; // Repaint entire form area 
    virtual void Refresh() = 0; // Calls Refresh() on all child controls forcing them to clear internal canvas(drawing buffer) 
    virtual void Repaint(const Rect &rect, const bool force = false) = 0; // Repaint specified form rectangle. If force is true, current repaint rectangle stored in a form will be rewritten with a new one. If force is false, new rectangle will be added to current form's one. With force equals to true and zero rectangle repainting can be prevented at all 
    virtual void Repaint(const RectF &rect, const bool force = false) = 0; // Repaint specified form rectangle. If force is true, current repaint rectangle stored in a form will be rewritten with a new one. If force is false, new rectangle will be added to current form's one. With force equals to true and zero rectangle repainting can be prevented at all 

    // Hotkeys 
    virtual bool RegisterHotkey(const Key key, const bool ctrl, const bool alt, const bool shift, const bool is_down) = 0; // Register hotkey 
    virtual bool UnregisterHotkey(const Key key, const bool ctrl, const bool alt, const bool shift, const bool is_down) = 0; // Unregister hotkey 
    virtual bool UnregisterHotkeys() = 0; // Unregister all registered hotkeys 

    // Helpers 
    virtual void Release() = 0; // Destroy instance 
    virtual IFormService *QueryService() = 0; // Return service 

    // Window actions 
    virtual bool Show() = 0; // Show 
    virtual ModalResult ShowModal() = 0; // Show as modal 
    virtual bool Hide() = 0; // Hide 
    virtual PlatformHandle CreateTimer(TImerListener *listener, const float interval) = 0; // Create timer 
    virtual bool DeleteTimer(const PlatformHandle id) = 0; // Delete timer 
    virtual void DeleteTimers() = 0; // Delete all timers 
    virtual bool ResetTimer(const PlatformHandle id, const float interval) = 0; // Change timer interval and reset it to start 
    virtual bool Maximize() = 0; // Maximize 
    virtual bool Minimize() = 0; // Minimize 
    virtual bool Restore() = 0; // Restore 
    virtual bool CopyStringToClipboard(const String &str) = 0; // Copy specified string to clipboard 
    virtual bool CopyStringFromClipboard() = 0; // Copy string from clipboard. If successful, focused widget will receive NotifyOnPasteString() notification immediately or later(depends on OS) 
    virtual Rect ScreenToClient(const Rect &rect) = 0; // Convert from screen to form coordinates 
    virtual Point ScreenToClient(const Point &pos) = 0; // Convert from screen to form coordinates 
    virtual Rect ClientToScreen(const Rect &rect) = 0; // Convert from from to screen coordinates 
    virtual Point ClientToScreen(const Point &pos) = 0; // Convert from from to screen coordinates 
    virtual bool Close() = 0; // Close form(send close message to corresponding window) 

    // Tasks 
    virtual bool AddTask(ITask *task) = 0; // Add task to the form. All tasks executed(one by one) after last unlock repaint and removed after it 
    virtual bool DeleteTask(const int index) = 0; // Delete task by id 
    virtual bool DeleteTask(ITask *task) = 0; // Delete specified task 
    virtual void DeleteTasks() = 0; // Delete all tasks 
    virtual void RunTasks() = 0; // Run tasks(only if they are not run yet) 

    // Hint actions 
    virtual bool ShowHint(const String &text, const Point &position) = 0; // Show hint. Position is in form coordinates 
    virtual bool ShowHint(IControl *control, const PointF &position) = 0; // Show control's hint. Position is in control coordinates 
};

Input control

Such a control is used to customize the form. It is responsible by drawing borders and header. This control usually has zero size and when it is added to form it calls form's setInputControl(...) method setting itself as input handler for the form. The control which is set as input handler receives all keyboard events the form receive if it wasn't handled by capture keyboard control. It receives all mouse events which was not handled by other controls or there is no control to handle them. The same is true as well for drop files event.

Namespace: nitisa
Include: Nitisa/Interfaces/IForm.h