Overview
Examples
Screenshots
Comparisons
Applications
Download
Documentation
Tutorials
UppHub
Status & Roadmap
FAQ
Authors & License
Forums
Funding U++
Search on this site











SourceForge.net Logo

SourceForge.net Logo

GitHub Logo

Discord Logo

Frame

 

Demonstration of widget frames

 

         

 

 

main.cpp

 

#include <CtrlLib/CtrlLib.h>

 

using namespace Upp;

 

struct Frame1 : CtrlFrame {

    virtual void FrameLayout(Rect& r) {

        r.left += 20;

    }

    virtual void FrameAddSize(Size& sz) {

        sz.cx += 20;

    }

    virtual void FramePaint(Draw& w, const Rect& r) {

        w.DrawRect(r.left, r.top, 20, r.Height(), SLtGreen);

    }

};

 

struct Frame2 : Frame1 {

    Button x;

 

    virtual void FrameLayout(Rect& r) {

        x.SetFrameRect(r.left, r.top, 16, 16);

        r.left += 16;

    }

    virtual void FrameAddSize(Size& sz) {

        sz.cx += 16;

    }

    virtual void FramePaint(Draw& w, const Rect& r) {

        w.DrawRect(r.left, r.top + 16, 20, r.Height() - 16, SLtMagenta);

    }

    virtual void FrameAdd(Ctrl& parent) {

        parent.Add(x);

    }

    virtual void FrameRemove() {

        x.Remove();

    }

 

    Frame2() {

        x.LeftPos(0, 16).TopPos(0, 16).NoWantFocus();

    }

};

 

struct CtrlSelfFrame : Ctrl, CtrlFrame

{

   virtual void FrameLayout(Rect &r) {

       r.left += 20;

       r.top += 20;

   }

   virtual void FrameAddSize(Size &sz) {

       sz += Size(20, 20);

   }

   virtual void FramePaint(Draw &w, const Rect &r) {

       w.DrawRect(r.left, r.top, r.Width(), 20, SGreen);

       w.DrawRect(r.left, r.top + 20, 20, r.Height() - 20, SBlue);

   }

    virtual void Paint(Draw& w) {

        w.DrawRect(GetSize(), SYellow);

    }

    CtrlSelfFrame() {

        SetFrame(*this);

        AddFrame(InsetFrame());

    }

};

 

GUI_APP_MAIN

{

    TopWindow  win;

    StaticRect ctrl;

    ctrl.Color(SLtCyan);

    win.Add(ctrl.SizePos());

    win.SetRect(0, 0, 100, 100);

    win.Run();

 

    ctrl.SetFrame(InsetFrame());

    win.Run();

 

    ctrl.AddFrame(BlackFrame());

    win.Run();

 

    Frame1 frame1;

    ctrl.InsertFrame(0, frame1);

    win.Run();

 

    Frame2 frame2;

    ctrl.AddFrame(frame2);

    win.Run();

 

    ctrl.Remove();

    CtrlSelfFrame csf;

    win.Add(csf.SizePos());

    win.Run();

}

 

 

 

 

Do you want to contribute?