home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / dho.zip / DHO / TUTORIAL / EXAMPLE7.CC < prev    next >
C/C++ Source or Header  |  1995-09-03  |  4KB  |  176 lines

  1. /****************************************/
  2. /*    Developer Helper Object Set       */
  3. /*  (C) 1994-95 Thomas E. Bednarz, Jr.  */
  4. /*     All rights reserved              */
  5. /***************************************/
  6.  
  7. /* $Id: example7.cc 1.3 1995/09/03 00:36:55 teb Exp $ */
  8.  
  9. /*******************************************
  10.  *   Example7.cc 
  11.  * 
  12.  *   This example adds a modal dialog box
  13.  *    to the application.
  14.  *******************************************/
  15.  
  16. #define INCL_WIN
  17. #include<os2.h>
  18.  
  19. //DHO application object header file
  20. #include<applicat.h>
  21. #include<framewin.h>
  22. #include<moddlog.h>
  23. #include<vset.h>
  24.  
  25. #define kAppId 100
  26. #define aboutText "Developer Helper Sample App\n (c) 1994-95 Tom Bednarz\n     All Rights Reserved."
  27.  
  28.  
  29.  
  30.  
  31. class TColorSelectDlog : public TModalDialog
  32. {
  33.       TValueSet *fBkgndColors, *fShapeColors;
  34.    public:
  35.       TColorSelectDlog(ULONG resource, TWinBase *owner, void *buffer):
  36.          TModalDialog(resource, owner, buffer){;};
  37.       virtual~TColorSelectDlog()
  38.       {
  39.          if(fBkgndColors)
  40.             delete fBkgndColors;
  41.          if(fShapeColors)
  42.             delete fShapeColors;
  43.       }
  44.       virtual BOOL init()
  45.       {
  46.          ULONG index, i, j;
  47.          if (TModalDialog::init())
  48.          {
  49.             fBkgndColors=new TValueSet(201, this);
  50.             fShapeColors=new TValueSet(202, this);
  51.             index = 1;
  52.             j=1;
  53.             for (i=1; i<4; i++)
  54.             {
  55.                for (j=1; j<6; j++)
  56.                {
  57.                   fBkgndColors->setItem(i,j,(VOID*)index);
  58.                   fShapeColors->setItem(i,j,(VOID*)index);
  59.                   index++;
  60.                }
  61.             }
  62.             return TRUE;
  63.          }
  64.          return FALSE;
  65.       }
  66. };
  67.  
  68.  
  69.  
  70.  
  71. class TExampleClientWin : public TWindow
  72. {
  73.       SHORT sPageX, sPageY;
  74.    public:
  75.       TExampleClientWin(ULONG id, TWinBase *parent):TWindow(id, parent){;};
  76.       virtual void doSize(WinMsg wm)
  77.       {
  78.          sPageX = SHORT1FROMMP(wm.mp2);
  79.          sPageY = SHORT2FROMMP(wm.mp2);
  80.       }
  81.       virtual void paintWindow(HPS ps, RECTL rcl)
  82.       {
  83.          POINTL ptl;
  84.          SHORT w;
  85.  
  86.          if ((sPageX == 0) && (sPageY == 0))         
  87.          {
  88.             sPageX = rcl.xRight - rcl.xLeft;
  89.             sPageY = rcl.yTop - rcl.yBottom; 
  90.          }
  91.  
  92.          if (sPageX > sPageY)
  93.             w = sPageY / 2;
  94.          else
  95.             w = sPageX / 2;         
  96.  
  97.          WinFillRect(ps, &rcl, CLR_BLUE);
  98.  
  99.          rcl.xLeft = (sPageX/2) -(w/2);
  100.          rcl.xRight = rcl.xLeft +w;
  101.          rcl.yBottom = (sPageY /2) -(w/2);
  102.          rcl.yTop = rcl.yBottom+w;
  103.  
  104.          WinFillRect(ps, &rcl, CLR_YELLOW);
  105.          
  106.       }
  107. };
  108.  
  109.  
  110.  
  111. class TExampleFrameWin : public TFrameWindow
  112. {
  113.  
  114.    public:
  115.       TExampleFrameWin(ULONG id, char *title):TFrameWindow(id, title)
  116.       {   
  117.          fShellPos = TRUE;
  118.          fFrAttr.menu = TRUE;
  119.          fFrAttr.icon = TRUE;
  120.       };
  121.       virtual BOOL init()
  122.       {
  123.          if (TFrameWindow::init())
  124.          {  
  125.             TExampleClientWin *client = new
  126.                 TExampleClientWin(FID_CLIENT, this);
  127.             return client->init();
  128.          }
  129.          return FALSE;
  130.       }
  131.       virtual void doCommand(WinMsg wm)
  132.       {
  133.          SHORT command = SHORT1FROMMP(wm.mp1);
  134.          if (command == 102)
  135.          {
  136.              TColorSelectDlog dlog(200, this, NULL);
  137.              dlog.init();
  138.              dlog.Execute();
  139.          }
  140.          if (command == 103)
  141.          {
  142.             WinPostMsg(wm.hwnd, WM_QUIT, 0,0);
  143.          }
  144.          else if (command == 104)
  145.          {
  146.             WinMessageBox(HWND_DESKTOP, hwnd, (PSZ)aboutText, 
  147.                    (PSZ)"Product Information", 0, MB_MOVEABLE | MB_OK 
  148.                    | MB_ICONEXCLAMATION);
  149.          }
  150.       }
  151. };
  152.  
  153.  
  154. class TExampleApp : public TApplication
  155. {
  156.    public:
  157.       TExampleApp(ULONG res):TApplication(res){;};
  158.       virtual void CreateMainWindow()
  159.       {
  160.          MainWin=new TExampleFrameWin(fResource, "DHO Tutorial App");
  161.       }
  162. };
  163.  
  164.  
  165.  
  166. //=========================================
  167. //  program entry point
  168. INT main(void)
  169. {
  170.    TExampleApp app(kAppId);
  171.  
  172.    app.init();     // initialize object
  173.    app.run();      // begin event loop          
  174.  
  175.    return 0;
  176. }