home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / dtx9302 / tvision / tvcpp / winmenu.cpp < prev   
Encoding:
C/C++ Source or Header  |  1993-03-05  |  3.2 KB  |  128 lines

  1. /*========================================================*/
  2. /*                       WINMENU.CPP                      */
  3. /*             (C) 1993 Michael Maier & DMV-Verlag        */
  4. /*     Demonstration, wie ein Menü in einem Fenster       */
  5. /*                 eingesetzt werden kann                 */
  6. /*        Compiler: Turbo C++ 3.0, Borland C++ 3.1        */
  7. /*========================================================*/
  8.  
  9. #include <stdlib.h>
  10. #include <stdio.h>
  11.  
  12. #define Uses_TEventQueue
  13. #define Uses_TEvent
  14. #define Uses_TProgram
  15. #define Uses_TApplication
  16. #define Uses_TKeys
  17. #define Uses_TRect
  18. #define Uses_TMenuBar
  19. #define Uses_TSubMenu
  20. #define Uses_TMenuItem
  21. #define Uses_TStatusLine
  22. #define Uses_TStatusItem
  23. #define Uses_TStatusDef
  24. #define Uses_TDeskTop
  25. #define Uses_TView
  26. #define Uses_TWindow
  27. #include <tv.h>
  28.  
  29. const int cmNoCommand = 200;
  30. const int cmNewWin   = 201;
  31.  
  32. class WinMenu : public TWindow
  33. {
  34.   protected:
  35.   TMenuBar *WinMenuBar ;
  36.  
  37.   public:
  38.   WinMenu(const TRect& r, const char *aTitle);
  39. };
  40.  
  41.  
  42. WinMenu::WinMenu(const TRect& r, const char *aTitle)
  43.   : TWindow( r, aTitle, 0), TWindowInit(&WinMenu::initFrame)
  44. {
  45.  
  46.   TSubMenu& SubMenu1 = *new TSubMenu("~F~enster", kbAltD) +
  47.    *new TMenuItem("~Z~oomen", cmNewWin, kbAltZ, hcNoContext,
  48.                   "F5") +
  49.     *new TMenuItem("~S~chließen", cmClose, kbAltS,
  50.                     hcNoContext, "");
  51.  
  52.   TSubMenu& SubMenu2 = *new TSubMenu("~E~dit", kbAltD) +
  53.    *new TMenuItem("~C~ut", cmNoCommand, kbAltC, hcNoContext,
  54.                   "") +
  55.     *new TMenuItem("C~o~py", cmNoCommand, kbAltO,
  56.                     hcNoContext, "") +
  57.      *new TMenuItem("~P~aste", cmNoCommand, kbAltP,
  58.                      hcNoContext, "");
  59.  
  60.   TRect newPos = getExtent ();
  61.   ++newPos.a.y;
  62.   ++newPos.a.x;
  63.   --newPos.b.x;
  64.   newPos.b.y = newPos.a.y + 1;
  65.   WinMenuBar = new TMenuBar(newPos, SubMenu1 + SubMenu2);
  66.   insert(WinMenuBar);
  67. }
  68.  
  69. class DemoWinMenu: public TApplication
  70. {
  71.   public:
  72.     DemoWinMenu();
  73.     static TMenuBar *initMenuBar(TRect r);
  74.     virtual void handleEvent(TEvent & event);
  75. };
  76.  
  77. void DemoWinMenu::handleEvent(TEvent& event)
  78. {
  79.  
  80.   WinMenu *win;
  81.  
  82.   TApplication::handleEvent(event);
  83.   if (event.what == evCommand)
  84.   {
  85.   switch (event.message.command)
  86.     {
  87.       case cmNewWin:
  88.         if ((win = new WinMenu(TRect(10, 10, 50, 20),
  89.                                "Fenster")) != NULL)
  90.           deskTop->insert(win);
  91.           break;
  92.       default:
  93.         return;
  94.     }
  95.     clearEvent(event);
  96.   }
  97. }
  98.  
  99. TMenuBar *DemoWinMenu::initMenuBar(TRect r)
  100. {
  101.   r.b.y  = r.a.y + 1;
  102.   return new TMenuBar(r, *new TSubMenu("~D~atei", kbAltD) +
  103.    *new TMenuItem("~F~enster", cmNewWin, kbF3, hcNoContext,
  104.         "F3") + newLine() +
  105.     *new TMenuItem("~E~nde", cmQuit, kbNoKey, hcNoContext));
  106. }
  107.  
  108.  
  109. DemoWinMenu::DemoWinMenu():
  110.                TProgInit(
  111.                          &DemoWinMenu::initStatusLine,
  112.                          &DemoWinMenu::initMenuBar,
  113.                          &DemoWinMenu::initDeskTop
  114.                         )
  115. {
  116. }
  117.  
  118.  
  119. int main ()
  120. {
  121.   DemoWinMenu WinMenuAppl;
  122.   WinMenuAppl.run();
  123.   return 0;
  124. }
  125.  
  126. /*========================================================*/
  127. /*                  Ende von WINMENU.CPP                  */
  128.