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

  1. #include "stdafx.h"
  2. #include "resource.h"
  3. #include "..\..\..\include\awaremfc.h"
  4.  
  5. //////////////////////////////////////////////////////////////////////
  6. //
  7. //  Register the VBX events used in the Clock application.
  8. //
  9.  
  10. UINT VBN_CLICK = AfxRegisterVBEvent("Click");
  11.  
  12. //////////////////////////////////////////////////////////////////////
  13. //
  14. //  The following class implements the Clock apllication's about box.
  15. //
  16.  
  17. class CAboutDlg : public CDialog
  18. {
  19.   protected :
  20.     CAwareClock* m_pClock;
  21.  
  22.   public :
  23.     CAboutDlg();
  24.  
  25.   protected :
  26.     virtual void DoDataExchange(CDataExchange* pDX);
  27.     virtual BOOL OnInitDialog();
  28. };
  29.  
  30. //////////////////////////////////////////////////////////////////////
  31.  
  32. CAboutDlg::CAboutDlg() : CDialog(IDD_ABOUTBOX)
  33. {
  34.   m_pClock = NULL;
  35. }
  36.  
  37. //////////////////////////////////////////////////////////////////////
  38.  
  39. void CAboutDlg::DoDataExchange(CDataExchange* pDX)
  40. {
  41.   CDialog::DoDataExchange(pDX);
  42.   DDX_VBControl(pDX, IDC_CLOCK, m_pClock);
  43. }
  44.  
  45. //////////////////////////////////////////////////////////////////////
  46.  
  47. BOOL CAboutDlg::OnInitDialog()
  48. {
  49.   CDialog::OnInitDialog();
  50.   m_pClock->SetAnalogTicks(CLK_ANALOGTICKS_HOUR);
  51.   m_pClock->SetClockStyle(CLK_CLOCKSTYLE_ANALOG);
  52.   return TRUE;
  53. }
  54.  
  55. //////////////////////////////////////////////////////////////////////
  56. //
  57. //  The following class implements the Clock application's main window.
  58. //
  59.  
  60. class CClockWnd : public CFrameWnd
  61. {
  62.   protected :
  63.     CAwareClock m_Clock;
  64.  
  65.   public :
  66.     virtual BOOL Create();
  67.  
  68.   protected :
  69.     afx_msg void OnClick(UINT, int, CWnd*, LPVOID lpParams);
  70.     afx_msg void OnSize(UINT nType, int x, int y);
  71.     
  72.   DECLARE_MESSAGE_MAP()
  73. };
  74.  
  75. //////////////////////////////////////////////////////////////////////
  76.  
  77. BEGIN_MESSAGE_MAP(CClockWnd, CFrameWnd)
  78.   ON_VBXEVENT(VBN_CLICK, IDC_CLOCK, OnClick)
  79.   ON_WM_SIZE()
  80. END_MESSAGE_MAP()
  81.  
  82. //////////////////////////////////////////////////////////////////////
  83.  
  84. BOOL CClockWnd::Create()
  85. {
  86.   CRect rectClock(100, 100, 100, 100);
  87.   
  88.   CFrameWnd::Create(
  89.     NULL, "Aware/VBX Clock", WS_OVERLAPPEDWINDOW,
  90.     rectDefault, NULL, "MainMenu"
  91.   );
  92.   m_Clock.Create(NULL, rectClock, this, IDC_CLOCK);
  93.   m_Clock.SetAllowMoveHand(CLK_ALLOWMOVEHAND_LEFT_BUTTON);
  94.   m_Clock.SetBorderStyle(CLK_BORDERSTYLE_NO_BORDER);
  95.   m_Clock.SetClockStyle(CLK_CLOCKSTYLE_ANALOG);
  96.   return TRUE;
  97. }
  98.  
  99. //////////////////////////////////////////////////////////////////////
  100.  
  101. afx_msg void CClockWnd::OnClick(UINT, int, CWnd*, LPVOID lpParams)
  102. {
  103.   int iButton = CLK_CLICK_BUTTON(lpParams);
  104.   
  105.   if( iButton == 2)  // if right button click
  106.   {
  107.     switch( m_Clock.GetAnalogTicks() )
  108.     {
  109.       case CLK_ANALOGTICKS_NONE :
  110.         m_Clock.SetAnalogTicks(CLK_ANALOGTICKS_HOUR);
  111.         break;
  112.       case CLK_ANALOGTICKS_HOUR :
  113.         m_Clock.SetAnalogTicks(CLK_ANALOGTICKS_MINUTE);
  114.         break;
  115.       case CLK_ANALOGTICKS_MINUTE :
  116.         m_Clock.SetAnalogTicks(CLK_ANALOGTICKS_BOTH);
  117.         break;
  118.       case CLK_ANALOGTICKS_BOTH :
  119.         m_Clock.SetAnalogTicks(CLK_ANALOGTICKS_NONE);
  120.         break;
  121.     }
  122.   }
  123. }
  124.  
  125. //////////////////////////////////////////////////////////////////////
  126.  
  127. afx_msg void CClockWnd::OnSize(UINT nType, int cx, int cy)
  128. {
  129.   m_Clock.MoveWindow(0, 0, cx, cy);
  130. }
  131.  
  132. //////////////////////////////////////////////////////////////////////
  133. //
  134. //  The following class implements the Clock application.
  135. //
  136.  
  137. class CClockApp : public CWinApp
  138. {
  139.   public:
  140.     virtual BOOL InitInstance();
  141.     virtual int ExitInstance();
  142.     afx_msg void OnAppAbout();
  143.  
  144.   DECLARE_MESSAGE_MAP()
  145. };
  146.  
  147. //////////////////////////////////////////////////////////////////////
  148.  
  149. BEGIN_MESSAGE_MAP(CClockApp, CWinApp)
  150.   ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
  151. END_MESSAGE_MAP()
  152.  
  153. //////////////////////////////////////////////////////////////////////
  154.  
  155. BOOL CClockApp::InitInstance()
  156. {
  157.   CClockWnd* pClockWnd = new CClockWnd();
  158.   
  159.   EnableVBX();
  160.   LoadVBXFile("awarecc.vbx");
  161.   pClockWnd->Create();
  162.   pClockWnd->ShowWindow(m_nCmdShow);
  163.   pClockWnd->UpdateWindow();
  164.   m_pMainWnd = pClockWnd;
  165.   return TRUE;
  166. }
  167.  
  168. //////////////////////////////////////////////////////////////////////
  169.  
  170. int CClockApp::ExitInstance()
  171. {
  172.   UnloadVBXFile("awarecc.vbx");
  173.   return CWinApp::ExitInstance();;
  174. }
  175.  
  176. //////////////////////////////////////////////////////////////////////
  177.  
  178. void CClockApp::OnAppAbout()
  179. {
  180.     CAboutDlg aboutDlg;
  181.     aboutDlg.DoModal();
  182. }
  183.  
  184. //////////////////////////////////////////////////////////////////////
  185. //
  186. //  This is the one and only Clock application object.
  187. //
  188.  
  189. CClockApp theApp;
  190.