home *** CD-ROM | disk | FTP | other *** search
/ Mastering MFC Development / MMD.ISO / samples / c12 / useclock / useclockview.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1997-02-20  |  5.1 KB  |  204 lines

  1. // UseClockView.cpp : implementation of the CUseClockView class
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "UseClock.h"
  6.  
  7. #include "clock.h"
  8. #include "hoursminutesdlg.h"
  9. #include "clockpropertiesdlg.h"
  10.  
  11. #include "UseClockDoc.h"
  12. #include "UseClockView.h"
  13.  
  14. #ifdef _DEBUG
  15. #define new DEBUG_NEW
  16. #undef THIS_FILE
  17. static char THIS_FILE[] = __FILE__;
  18. #endif
  19.  
  20. /////////////////////////////////////////////////////////////////////////////
  21. // CUseClockView
  22.  
  23. IMPLEMENT_DYNCREATE(CUseClockView, CFormView)
  24.  
  25. BEGIN_MESSAGE_MAP(CUseClockView, CFormView)
  26.     //{{AFX_MSG_MAP(CUseClockView)
  27.     ON_COMMAND(ID_CLOCK_TOGGLEALARM, OnClockToggleAlarm)
  28.     ON_COMMAND(ID_CLOCK_SETALARMHOUR, OnClockSetAlarmHour)
  29.     ON_COMMAND(ID_CLOCK_SETALARMMINUTE, OnClockSetAlarmMinute)
  30.     ON_COMMAND(ID_CLOCK_SETBACKCOLOR, OnClockSetBackColor)
  31.     ON_COMMAND(ID_CLOCK_ABOUTBOXMETHOD, OnClockAboutBoxMethod)
  32.     ON_COMMAND(ID_CLOCK_ALARMTIMEMETHOD, OnClockAlarmTimeMethod)
  33.     ON_COMMAND(ID_CLOCK_TESTALARMMETHOD, OnClockTestAlarmMethod)
  34.     ON_COMMAND(ID_CLOCK_SETALARMCOMMAND, OnClockSetAlarmCommand)
  35.     ON_COMMAND(ID_CLOCK_SHOWPROPERTIES, OnClockShowProperties)
  36.     //}}AFX_MSG_MAP
  37. END_MESSAGE_MAP()
  38.  
  39. BEGIN_EVENTSINK_MAP(CUseClockView, CFormView)
  40.     //{{AFX_EVENTSINK_MAP(CUseClockView)
  41.     ON_EVENT(CUseClockView, IDC_CLOCKCTRL, 1 /* AlarmEvent */, OnAlarmEventClockCtrl, VTS_NONE)
  42.     //}}AFX_EVENTSINK_MAP
  43. END_EVENTSINK_MAP()
  44.  
  45. /////////////////////////////////////////////////////////////////////////////
  46. // CUseClockView construction/destruction
  47.  
  48. CUseClockView::CUseClockView()
  49.     : CFormView(CUseClockView::IDD)
  50. {
  51.     //{{AFX_DATA_INIT(CUseClockView)
  52.     //}}AFX_DATA_INIT
  53.     // TODO: add construction code here
  54. }
  55.  
  56. CUseClockView::~CUseClockView()
  57. {
  58. }
  59.  
  60. void CUseClockView::DoDataExchange(CDataExchange* pDX)
  61. {
  62.     CFormView::DoDataExchange(pDX);
  63.     //{{AFX_DATA_MAP(CUseClockView)
  64.     DDX_Control(pDX, IDC_CLOCKCTRL, m_ClockControl);
  65.     //}}AFX_DATA_MAP
  66. }
  67.  
  68. BOOL CUseClockView::PreCreateWindow(CREATESTRUCT& cs)
  69. {
  70.     // TODO: Modify the Window class or styles here by modifying
  71.     //  the CREATESTRUCT cs
  72.  
  73.     return CFormView::PreCreateWindow(cs);
  74. }
  75.  
  76. /////////////////////////////////////////////////////////////////////////////
  77. // CUseClockView diagnostics
  78.  
  79. #ifdef _DEBUG
  80. void CUseClockView::AssertValid() const
  81. {
  82.     CFormView::AssertValid();
  83. }
  84.  
  85. void CUseClockView::Dump(CDumpContext& dc) const
  86. {
  87.     CFormView::Dump(dc);
  88. }
  89.  
  90. CUseClockDoc* CUseClockView::GetDocument() // non-debug version is inline
  91. {
  92.     ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CUseClockDoc)));
  93.     return (CUseClockDoc*)m_pDocument;
  94. }
  95. #endif //_DEBUG
  96.  
  97. /////////////////////////////////////////////////////////////////////////////
  98. // CUseClockView message handlers
  99.  
  100. void CUseClockView::OnInitialUpdate() 
  101. {
  102.     CFormView::OnInitialUpdate();
  103.     
  104.     // Make the view exactly the same size as the dialog
  105.     // box it contains.
  106.     GetParentFrame()->RecalcLayout();
  107.     ResizeParentToFit(FALSE);    
  108. }
  109.  
  110. void CUseClockView::OnClockToggleAlarm() 
  111. {
  112.     BOOL bAlarmState = m_ClockControl.GetAlarmSet();
  113.     
  114.     m_ClockControl.SetAlarmSet(! bAlarmState);
  115. }
  116.  
  117.  
  118. void CUseClockView::OnAlarmEventClockCtrl() 
  119. {
  120.     MessageBeep(-1);
  121.     MessageBox("The control has fired its alarm event!");
  122. }
  123.  
  124. void CUseClockView::OnClockSetAlarmHour() 
  125. {
  126.     CHoursMinutesDlg dlg(2);
  127.     dlg.m_hours = m_ClockControl.GetAlarmHour();
  128.     dlg.m_minutes = m_ClockControl.GetAlarmMinute();
  129.     if (IDOK == dlg.DoModal())
  130.         m_ClockControl.SetAlarmHour(dlg.m_hours);
  131. }
  132.  
  133. void CUseClockView::OnClockSetAlarmMinute() 
  134. {
  135.     CHoursMinutesDlg dlg(1);
  136.     dlg.m_hours = m_ClockControl.GetAlarmHour();
  137.     dlg.m_minutes = m_ClockControl.GetAlarmMinute();
  138.     if (IDOK == dlg.DoModal())
  139.         m_ClockControl.SetAlarmMinute(dlg.m_minutes);
  140. }
  141.  
  142. void CUseClockView::OnClockSetBackColor() 
  143. {
  144.     OLE_COLOR current_color = m_ClockControl.GetBackColor();
  145.     COLORREF old_color;
  146.  
  147.     // OLE_COLOR must be converted to a COLORREF for use
  148.     // by CColorDialog.
  149.     if (S_OK != ::OleTranslateColor(current_color,
  150.                                     NULL, &old_color))
  151.         return;
  152.  
  153.     CColorDialog dlg(old_color);
  154.  
  155.     if (IDOK == dlg.DoModal())
  156.     {
  157.         // No translation is needed from COLORREF to OLE_COLOR
  158.         COLORREF new_color = dlg.GetColor();
  159.         if (new_color != old_color)
  160.         {
  161.             current_color = new_color;
  162.             m_ClockControl.SetBackColor(current_color);
  163.         }
  164.     }
  165. }
  166.  
  167. void CUseClockView::OnClockAboutBoxMethod() 
  168. {
  169.     m_ClockControl.AboutBox();
  170. }
  171.  
  172. void CUseClockView::OnClockAlarmTimeMethod() 
  173. {
  174.     CHoursMinutesDlg dlg;
  175.  
  176.     dlg.m_hours = m_ClockControl.GetAlarmHour();
  177.     dlg.m_minutes = m_ClockControl.GetAlarmMinute();
  178.     if (IDOK == dlg.DoModal())
  179.         m_ClockControl.SetAlarmTime(dlg.m_hours, dlg.m_minutes);
  180. }
  181.  
  182. void CUseClockView::OnClockTestAlarmMethod() 
  183. {
  184.     // Invoke the control's TestAlarm method
  185.     m_ClockControl.TestAlarm();
  186. }
  187.  
  188. void CUseClockView::OnClockSetAlarmCommand() 
  189. {
  190.     m_ClockControl.SetAlarmCommand("calc.exe");
  191. }
  192.  
  193. void CUseClockView::OnClockShowProperties() 
  194. {
  195.     CClockPropertiesDlg dlg;
  196.  
  197.     dlg.m_minutes =    m_ClockControl.GetAlarmMinute();
  198.     dlg.m_hours = m_ClockControl.GetAlarmHour();
  199.     dlg.m_type = m_ClockControl.GetAlarmType();
  200.     dlg.m_command = m_ClockControl.GetAlarmCommand();
  201.  
  202.     dlg.DoModal();
  203. }
  204.