home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / C / OTL-MC5.DMS / in.adf / EO-Demos.lha / EasyObjects-Demos / Menu / Menu.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-09-28  |  2.4 KB  |  126 lines

  1.  
  2. #include <classes/intuition/window.h>
  3. #include <classes/intuition/screen.h>
  4. #include <classes/libraries/gadtools.h>
  5. #include <classes/exec/libraries.h>
  6.  
  7. class ProjectMenuC : public MenuTitleC {
  8. public:
  9.     ProjectMenuC();
  10. protected:
  11.     MenuItemC pNew;
  12.     MenuItemC pOpen;
  13.     MenuSeperatorC pSep1;
  14.     MenuItemC pSave;
  15.     MenuItemC pSaveAs;
  16.     MenuSeperatorC pSep2;
  17.     MenuItemC pAbout;
  18.     MenuSeperatorC pSep3;
  19.     MenuItemC pQuit;
  20. };
  21.  
  22. ProjectMenuC::ProjectMenuC()
  23.     : MenuTitleC("Projekt"),
  24.       pNew("Neu",NULL,"N"),
  25.       pOpen("Öffnen...",NULL,"O"),
  26.       pSep1(),
  27.       pSave("Sichern",NULL,"S"),
  28.       pSaveAs("Sichern Als...",NULL,"A"),
  29.       pSep2(),
  30.       pAbout("Über...",NULL,"?"),
  31.       pSep3(),
  32.       pQuit("Beenden...",NULL,"Q")
  33. {
  34.     add(pNew);
  35.     add(pOpen);
  36.     add(pSep1);
  37.     add(pSave);
  38.     add(pSaveAs);
  39.     add(pSep2);
  40.     add(pAbout);
  41.     add(pSep3);
  42.     add(pQuit);
  43. }
  44.  
  45. class TestWindowC : public WindowC {
  46. public:
  47.     TestWindowC(IDCMPortC &);
  48.     ~TestWindowC();
  49. private:
  50.     WindowCloseHandlerC wch;
  51. };
  52.  
  53. TestWindowC::TestWindowC(IDCMPortC &p)
  54.     : WindowC(p,
  55.         WA_DragBar,TRUE,
  56.         WA_Width,300,
  57.         WA_Height,150,
  58.         WA_CloseGadget,TRUE,
  59.         WA_DepthGadget,TRUE,
  60.         WA_Title,"Fenster mit Menü",
  61.         WA_IDCMP,IDCMP_GADGETUP,
  62.         WA_NewLookMenus,TRUE,
  63.        TAG_END),
  64.       wch(*this)
  65. {
  66.     addIDCMP(IDCMP_DISKINSERTED|IDCMP_DISKREMOVED);
  67. }
  68.  
  69. TestWindowC::~TestWindowC()
  70. {
  71.     close();
  72. }
  73.  
  74. LibraryBaseErrC GadToolsBase("gadtools.library",37);
  75. LibraryBaseErrC UtilityBase("utility.library",37);
  76. LibraryBaseErrC CxBase("commodities.library",37);
  77. LibraryBaseErrC LayersBase("layers.library",37);
  78. LibraryBaseErrC WorkbenchBase("workbench.library",37);
  79.  
  80. int main()
  81. {
  82.     if (!LibraryBaseC::areAllOpen())
  83.         return 20;
  84.  
  85.     // diese Klasse empfängt und verarbeitet alle Signale
  86.     SignalsC sc;
  87.  
  88.     // der IDCMPort für die Fenster
  89.     IDCMPortC port;
  90.     sc.add(port);
  91.  
  92.     // Das Fenster
  93.     TestWindowC window(port);
  94.  
  95.     // noch einen Ctrl C HandlerC zur Sicherheit einhängen
  96.     CtrlCHandlerC ctrlchandler;
  97.     sc.add(ctrlchandler);
  98.  
  99.     // den öffentlichen Standardbildschirm sperren
  100.     PublicScreenC screen(NULL);
  101.     screen.open();
  102.  
  103.     // VisualInfo alloziieren
  104.     VisualInfoC vi(screen);
  105.  
  106.     // Menüleiste alloziieren und ins Fenster einhängen
  107.     MenuC menu(vi);
  108.     ProjectMenuC projectMenu();
  109.     menu.add(projectMenu);
  110.     menu.layout(GTMN_NewLookMenus,TRUE,TAG_END);
  111.     window.setMenuStrip(menu);
  112.  
  113.     // Fenster öffnen
  114.     window.open(
  115.         WA_Left, 20,
  116.         WA_Top, 50,
  117.         WA_AutoAdjust, TRUE,
  118.         WA_PubScreen, screen.screen(),
  119.         TAG_END);
  120.  
  121.     // THE BIG AND EASY ONE!
  122.     sc.loop();
  123.  
  124.     return 0;
  125. }
  126.