Sample4: The ScrolledForm Widget.

This example shows the usage of a ScrolledForm container to keep all objects in previous example in a smaller window with scrollbars.
Once again, layout adaption is completely automatic: try and resize the scrolled window and check the scrollbars.

/* C version */ #include <stdio.h> #include <stdlib.h> #include "mgui.h" void ExitCB(MOBJECT obj, void *a, void *b) {   MShellDestroy((MOBJECT)b);   MGUITerm();   exit(0); } void MGUIMain(int argc, char **argv) {    MOBJECT shell, sform, rform, cform, pb, lbl;    shell = MCreateShell("Example 4", SF_NO_CLOSE);    sform = MCreateScrolledRowForm(shell, 120, 80);    rform = MCreateRowForm(sform);    lbl = MCreateLabel(rform, "This Label establishes the width", HELV_MEDIUM);    MObjectSetShadow(lbl, WS_SHADOW_IN, 1, 0);     lbl = MCreateLabel(rform, "Small Label", HELV_MEDIUM);    MObjectSetShadow(lbl, WS_SHADOW_IN, 1, 0);     lbl = MCreateLabel(rform, "Not resizeable Label", HELV_MEDIUM);     MObjectSetShadow(lbl, WS_SHADOW_IN, 1, 0);     MObjectSetResize(lbl, False, False);     cform = MCreateColForm(sform);     pb = MCreatePButton(cform, "dummy", TIMES_MEDIUM);     pb = MCreatePButton(cform, "Quit", TIMES_MEDIUM);    MObjectSetAttachment(pb, True, True, False, True);    MPButtonSetCallback(pb, ExitCB, shell);    MShellRealize(shell);    MMainLoop(); }

// C++ version
#include <stdio.h>
#include "mguipp.h"

class CaAppl : public CmAppl {
public:
   void start(int, char **);
};

CaAppl appInstance;

class CaMainWindow : public CmShell {
public:
   CaMainWindow(const char *title, int flags);
   void exitCB(void);
};

void CaMainWindow::exitCB(void)
{
   delete this;
   CmAppl::end(0);
}

void CaAppl::start(int argc, char **argv)
{
   CaMainWindow *win = new CaMainWindow("Example 3", SF_NO_CLOSE);
   win->realize();
   mainLoop();
}

CaMainWindow::CaMainWindow(const char *title, int flags)
: CmShell(title, flags)
{
   CmScrolledRowForm *sform;
   CmRowForm *rform;
   CmColForm *cform;
   CmPushButton *pb;
   CmLabel *lbl;

   sform = new CmScrolledRowForm(this, 120, 80);
   rform = new CmRowForm(sform);
   lbl = new CmLabel(rform, "This Label establishes the window width", HELV_MEDIUM);
   lbl->setShadow(WS_SHADOW_IN, 1, 0); 
   lbl = new CmLabel(rform, "Small resizeable Label", HELV_MEDIUM);
   lbl->setShadow(WS_SHADOW_IN, 1, 0); 
   lbl = new CmLabel(rform, "Unresizeable Label", HELV_MEDIUM); 
   lbl->setShadow(WS_SHADOW_IN, 1, 0); 
   lbl->setResize(False, False); 

   cform = new CmColForm(sform); 
   pb = new CmPushButton(cform, "dummy", TIMES_MEDIUM); 
   pb = new CmPushButton(cform, "Quit", TIMES_MEDIUM);
   pb->setAttachment(True, True, False, True);
   pb->setCallback(this, (VOID_CB)exitCB);
}






Screenshot

Back