home *** CD-ROM | disk | FTP | other *** search
/ Piper's Pit BBS/FTP: ibm 0210 - 0219 / ibm0210-0219 / ibm0213.tar / ibm0213 / PWA_AWAR.ZIP / SAMPOWL.Z / AWCLOCK.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1994-07-05  |  4.4 KB  |  188 lines

  1. #include <owl\owlpch.h>
  2. #include <owl\applicat.h>
  3. #include <owl\framewin.h>
  4. #include <owl\vbxctl.h>
  5. #include "..\..\..\include\awareowl.h"
  6. #include "awclock.h"
  7.  
  8. //////////////////////////////////////////////////////////////////////
  9. //
  10. //  The following class implements the Clock application's about box.
  11. //
  12.  
  13. class TAboutDlg : public TDialog
  14. {
  15.   protected :
  16.     CAwareClock* pClock;
  17.  
  18.   public :
  19.     TAboutDlg(TWindow* parent);
  20.     ~TAboutDlg();
  21.  
  22.   protected :
  23.     virtual void SetupWindow();
  24. };
  25.  
  26. //////////////////////////////////////////////////////////////////////
  27.  
  28. TAboutDlg::TAboutDlg(TWindow* parent)
  29.  : TDialog(parent, "AboutDialog")
  30. {
  31.   pClock = new CAwareClock(this, IDC_CLOCK);
  32. }
  33.  
  34. //////////////////////////////////////////////////////////////////////
  35.  
  36. TAboutDlg::~TAboutDlg()
  37. {
  38.   delete pClock;
  39. }
  40.  
  41. //////////////////////////////////////////////////////////////////////
  42.  
  43. void TAboutDlg::SetupWindow()
  44. {
  45.   TDialog::SetupWindow();
  46.   pClock->SetAnalogTicks(CLK_ANALOGTICKS_HOUR);
  47.   pClock->SetClockStyle(CLK_CLOCKSTYLE_ANALOG);
  48. }
  49.  
  50. //////////////////////////////////////////////////////////////////////
  51. //
  52. //  The following class implements the Clock application's main window.
  53. //
  54.  
  55. class TClockWnd : public TFrameWindow, public TVbxEventHandler
  56. {
  57.   protected :
  58.     CAwareClock* pClock;
  59.  
  60.   public :
  61.     TClockWnd();
  62.     ~TClockWnd();
  63.  
  64.   protected :
  65.     virtual void SetupWindow();
  66.     void EvSize(UINT sizeType, TSize& size);
  67.     void EvClick(VBXEVENT far* event);
  68.  
  69.   DECLARE_RESPONSE_TABLE(TClockWnd);
  70. };
  71.  
  72. //////////////////////////////////////////////////////////////////////
  73.  
  74. DEFINE_RESPONSE_TABLE2(TClockWnd, TFrameWindow, TVbxEventHandler)
  75.   EV_WM_SIZE,
  76.   EV_VBXEVENTNAME (IDC_CLOCK, "Click", EvClick),
  77. END_RESPONSE_TABLE;
  78.  
  79. //////////////////////////////////////////////////////////////////////
  80.  
  81. TClockWnd::TClockWnd()
  82.   : TFrameWindow(0, "Aware/VBX Clock")
  83. {
  84.   AssignMenu("MainMenu");
  85.   pClock = new CAwareClock(this, IDC_CLOCK, "", 10, 10, 100, 40);
  86. }
  87.  
  88. //////////////////////////////////////////////////////////////////////
  89.  
  90. TClockWnd::~TClockWnd()
  91. {
  92.   delete pClock;
  93. }
  94.  
  95. //////////////////////////////////////////////////////////////////////
  96.  
  97. void TClockWnd::SetupWindow()
  98. {
  99.   TWindow::SetupWindow();
  100.   pClock->SetAllowMoveHand(CLK_ALLOWMOVEHAND_LEFT_BUTTON);
  101.   pClock->SetBorderStyle(CLK_BORDERSTYLE_NO_BORDER);
  102.   pClock->SetClockStyle(CLK_CLOCKSTYLE_ANALOG);
  103. }
  104.  
  105. //////////////////////////////////////////////////////////////////////
  106.  
  107. void TClockWnd::EvClick(VBXEVENT far* event)
  108. {
  109.   int iButton = CLK_CLICK_BUTTON(event);
  110.   ENUM enumAnalogTicks;
  111.  
  112.   if( iButton == 2 )  // if right button click
  113.   {
  114.     pClock->GetAnalogTicks(enumAnalogTicks);
  115.     switch( enumAnalogTicks )
  116.     {
  117.       case CLK_ANALOGTICKS_NONE :
  118.         pClock->SetAnalogTicks(CLK_ANALOGTICKS_HOUR);
  119.         break;
  120.       case CLK_ANALOGTICKS_HOUR :
  121.         pClock->SetAnalogTicks(CLK_ANALOGTICKS_MINUTE);
  122.         break;
  123.       case CLK_ANALOGTICKS_MINUTE :
  124.         pClock->SetAnalogTicks(CLK_ANALOGTICKS_BOTH);
  125.         break;
  126.       case CLK_ANALOGTICKS_BOTH :
  127.         pClock->SetAnalogTicks(CLK_ANALOGTICKS_NONE);
  128.         break;
  129.     }
  130.   }
  131. }
  132.  
  133. //////////////////////////////////////////////////////////////////////
  134.  
  135. void TClockWnd::EvSize(UINT /*sizeType*/, TSize& size)
  136. {
  137.   pClock->MoveWindow(0, 0, size.cx, size.cy);
  138. }
  139.  
  140. //////////////////////////////////////////////////////////////////////
  141. //
  142. //  The following class implements the Clock application.
  143. //
  144.  
  145. class TClockApp : public TApplication
  146. {
  147.   private:
  148.     void InitMainWindow();
  149.  
  150.   protected :
  151.     void CmAbout();
  152.  
  153.   DECLARE_RESPONSE_TABLE(TClockApp);
  154. };
  155.  
  156. //////////////////////////////////////////////////////////////////////
  157.  
  158. DEFINE_RESPONSE_TABLE1(TClockApp, TApplication)
  159.   EV_COMMAND(CM_ABOUT, CmAbout),
  160. END_RESPONSE_TABLE;
  161.  
  162. //////////////////////////////////////////////////////////////////////
  163.  
  164. void TClockApp::InitMainWindow()
  165. {
  166.   MainWindow = new TClockWnd;
  167. }
  168.  
  169. //////////////////////////////////////////////////////////////////////
  170.  
  171. void TClockApp::CmAbout()
  172. {
  173.   TAboutDlg(this->MainWindow).Execute();
  174. }
  175.  
  176. //////////////////////////////////////////////////////////////////////
  177. //
  178. //  The OWL application's main procedure.
  179. //
  180.  
  181. int OwlMain(int /*argc*/, char* /*argv*/ [])
  182. {
  183.   TClockApp theApp;
  184.  
  185.   TBIVbxLibrary vbxLib;
  186.   return theApp.Run();
  187. }
  188.