IWindow



Describes system window. Could be used without form as well. In case of using window with a form, do not change events and try to avoid using any methods(they are for internal usage by form or if window is not associated with form) except probably for getters(but use form's methods instead). Release() should not delete self, it should destroy system window if exists. Delete window class instance should be handled by application object.

You can find more information in comments below.

class IWindow
{
public:
    enum class ProgressType // Describe type of progress bar shown in task bar over the window 
    {
        None, // The progress bar is not visible 
        Indeterminate, // The progress bar shows indeterminate progress by running in marquee mode 
        Normal, // The normal state (green in the default theme) 
        Paused, // The paused state (yellow in the default theme) 
        Error // The error state (red in the default theme) 
    };
protected:
    PlatformHandle m_hHandle;
    IWindowListener *m_pListener;
public:
    PlatformHandle const &Handle;
    IWindowListener* const &Listener;

    virtual bool isCreated() = 0; // Whether a real system window was created or not 
    virtual bool isVisible() = 0; // Whether window is visible 
    virtual bool isEnabled() = 0; // Whether window is enabled 
    virtual bool isAcceptDragAndDrop() = 0; // Whether window accepts drag and drop 
    virtual bool isAcceptDropFiles() = 0; // Whether window accepts files dropping 
    virtual String getCaption() = 0; // Return caption 
    virtual Rect getRect() = 0; // Return rectangle in screen coordinates 
    virtual Point getSize() = 0; // Return size 
    virtual Point getPosition() = 0; // Return position in screen coordinates 
    virtual int getLeft() = 0; // Return left position on screen 
    virtual int getTop() = 0; // Return top position on screen 
    virtual int getWidth() = 0; // Return width 
    virtual int getHeight() = 0; // Return height 
    virtual Rect getClientRect() = 0; // Return client area 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 creation parameters 
    virtual IWindow *getParent() = 0; // Return parent window 
    virtual bool hasProgressBar() = 0; // Return whether task bar progress bar is available 
    
    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 accepts drag and drop 
    virtual bool setAcceptDropFiles(const bool value) = 0; // Set whether accepts files dropping 
    virtual bool setCaption(const String &value) = 0; // Set caption 
    virtual bool setRect(const Rect &value) = 0; // Set rectangle in screen coordinates 
    virtual bool setSize(const Point &value) = 0; // Set size 
    virtual bool setPosition(const Point &value) = 0; // Set position on screen 
    virtual bool setLeft(const int value) = 0; // Set left position on screen 
    virtual bool setTop(const int value) = 0; // Set top position on screen 
    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 setCursor(const CursorType value) = 0; // Set cursor 
    virtual bool setState(const WindowState value) = 0; // Set state 
    virtual bool setCreateParams(const CreateParams &value) = 0; // Set creation parameters. Has effect only before creation a real system window 
    virtual bool setParent(IWindow *value) = 0; // Set parent window. Has effect only before creation a real system window 
    virtual bool setModalResult(const ModalResult value) = 0; // Set modal result and close window. Only used when window was shown by ShowModal methods 
    virtual bool setWindowPosition(const WindowPosition value) = 0; // Set window position relative to screen or main window 
    virtual bool setProgressType(const ProgressType value) = 0; // Set task bar progress bar type if possible 
    virtual bool setProgressValue(const float value) = 0; // Set task bar progress bar value if possible. Should be in range 0..1 

    virtual bool Show() = 0; // Show 
    virtual ModalResult ShowModal() = 0; // Show as modal 
    virtual bool Hide() = 0; // Hide 
    virtual bool Close() = 0; // Close window(send close message) 
    virtual bool Create() = 0; // Create real window 
    virtual bool Create(IWindow *parent) = 0; // Create real window as child of specified one 
    virtual bool Create(const CreateParams ¶ms) = 0; // Create real window with specified parameters 
    virtual bool Create(const CreateParams ¶ms, IWindow *parent) = 0; // Create real window with specified parameters and parent window 
    virtual int CreateTimer(void(*callback)(void *param), void *param, const float interval) = 0; // Create timer. Interval is in seconds. Return unique identifier 
    virtual bool DeleteTimer(const int id) = 0; // Delete timer by identifier 
    virtual void DeleteTimers() = 0; // Delete all timers 
    virtual bool ResetTimer(const int id, const float interval) = 0; // Change timer interval and reset it 
    virtual bool CaptureMouse() = 0; // Capture mouse input 
    virtual void ReleaseMouseCapture() = 0; // Cancel capturing mouse input 
    virtual bool Maximize() = 0; // Maximize 
    virtual bool Minimize() = 0; // Minimize 
    virtual bool Restore() = 0; // Restore 
    virtual bool CopyStringToClipboard(const String &str) = 0; // Copy string to clipboard 
    virtual bool CopyStringFromClipboard() = 0; // Copy string from clipboard. If successful IWindowListener::OnPasteString() will be called immediately or later with the string to be inserted 
    virtual Rect ScreenToClient(const Rect &rect) = 0; // Convert from screen to client area coordinates 
    virtual Point ScreenToClient(const Point &pos) = 0; // Convert from screen to client area coordinates 
    virtual Rect ClientToScreen(const Rect &rect) = 0; // Convert from client area to screen coordinates 
    virtual Point ClientToScreen(const Point &pos) = 0; // Convert from client area to screen coordinates 
    virtual void Release() = 0; // Destroy instance. Usually you don't need to call this method 
    virtual IWindow *CreateInstance() = 0; // Create same class instance(without creating real window) 
    virtual IWindowService *QueryService() = 0; // Return service 
    virtual int GenerateID() = 0; // Generate new unique ID. Generation starts from 1 and increase value each call of this method. This ID is unique for given window only 
};
Namespace: nitisa
Include: Nitisa/Interfaces/IWindow.h