home *** CD-ROM | disk | FTP | other *** search
/ Using Visual C++ 4 (Special Edition) / Using_Visual_C_4_Special_Edition_QUE_1996.iso / ch03 / ch3_menu / ch3mview.cpp < prev    next >
C/C++ Source or Header  |  1995-09-23  |  4KB  |  191 lines

  1. // ch3mView.cpp : implementation of the CChapter03MenuView class
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "ch3_menu.h"
  6.  
  7. #include "ch3mDoc.h"
  8. #include "ch3mView.h"
  9.  
  10. #ifdef _DEBUG
  11. #define new DEBUG_NEW
  12. #undef THIS_FILE
  13. static char THIS_FILE[] = __FILE__;
  14. #endif
  15.  
  16. /////////////////////////////////////////////////////////////////////////////
  17. // CChapter03MenuView
  18.  
  19. IMPLEMENT_DYNCREATE(CChapter03MenuView, CView)
  20.  
  21. BEGIN_MESSAGE_MAP(CChapter03MenuView, CView)
  22.     //{{AFX_MSG_MAP(CChapter03MenuView)
  23.     ON_COMMAND(ID_TIME_DATETIME, OnTimeDateTime)
  24.     ON_COMMAND(ID_TIME_STARTTIMER, OnTimeStartTimer)
  25.     ON_COMMAND(ID_TIME_STOPTIMER, OnTimeStopTimer)
  26.     ON_WM_LBUTTONDOWN()
  27.     ON_WM_RBUTTONDOWN()
  28.     ON_WM_CHAR()
  29.     ON_WM_MOUSEMOVE()
  30.     ON_WM_TIMER()
  31.     //}}AFX_MSG_MAP
  32.     // Standard printing commands
  33.     ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
  34.     ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
  35.     ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
  36. END_MESSAGE_MAP()
  37.  
  38. /////////////////////////////////////////////////////////////////////////////
  39. // CChapter03MenuView construction/destruction
  40.  
  41. CChapter03MenuView::CChapter03MenuView()
  42. {
  43.     // TODO: add construction code here
  44.  
  45. }
  46.  
  47. CChapter03MenuView::~CChapter03MenuView()
  48. {
  49. }
  50.  
  51. BOOL CChapter03MenuView::PreCreateWindow(CREATESTRUCT& cs)
  52. {
  53.     // TODO: Modify the Window class or styles here by modifying
  54.     //  the CREATESTRUCT cs
  55.  
  56.     return CView::PreCreateWindow(cs);
  57. }
  58.  
  59. /////////////////////////////////////////////////////////////////////////////
  60. // CChapter03MenuView drawing
  61.  
  62. void CChapter03MenuView::OnDraw(CDC* pDC)
  63. {
  64.     CChapter03MenuDoc* pDoc = GetDocument();
  65.     ASSERT_VALID(pDoc);
  66.  
  67.     // TODO: add draw code for native data here
  68. }
  69.  
  70. /////////////////////////////////////////////////////////////////////////////
  71. // CChapter03MenuView printing
  72.  
  73. BOOL CChapter03MenuView::OnPreparePrinting(CPrintInfo* pInfo)
  74. {
  75.     // default preparation
  76.     return DoPreparePrinting(pInfo);
  77. }
  78.  
  79. void CChapter03MenuView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
  80. {
  81.     // TODO: add extra initialization before printing
  82. }
  83.  
  84. void CChapter03MenuView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
  85. {
  86.     // TODO: add cleanup after printing
  87. }
  88.  
  89. /////////////////////////////////////////////////////////////////////////////
  90. // CChapter03MenuView diagnostics
  91.  
  92. #ifdef _DEBUG
  93. void CChapter03MenuView::AssertValid() const
  94. {
  95.     CView::AssertValid();
  96. }
  97.  
  98. void CChapter03MenuView::Dump(CDumpContext& dc) const
  99. {
  100.     CView::Dump(dc);
  101. }
  102.  
  103. CChapter03MenuDoc* CChapter03MenuView::GetDocument() // non-debug version is inline
  104. {
  105.     ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CChapter03MenuDoc)));
  106.     return (CChapter03MenuDoc*)m_pDocument;
  107. }
  108. #endif //_DEBUG
  109.  
  110. /////////////////////////////////////////////////////////////////////////////
  111. // CChapter03MenuView message handlers
  112.  
  113. void CChapter03MenuView::OnTimeDateTime() 
  114. {
  115.     // display current date/time in long format
  116.     CClientDC dc(this);
  117.     dc.TextOut(10, 40, CTime::GetCurrentTime().Format("%#c"));
  118.     
  119. }
  120.  
  121. void CChapter03MenuView::OnTimeStartTimer() 
  122. {
  123.     // trigger a timer every second
  124.     SetTimer(1, 1000, NULL);
  125. }
  126.  
  127. void CChapter03MenuView::OnTimeStopTimer() 
  128. {
  129.     // just shut it down
  130.     KillTimer(1);
  131. }
  132.  
  133. void CChapter03MenuView::OnLButtonDown(UINT nFlags, CPoint point) 
  134. {
  135.     // display current date/time in standard format
  136.     CClientDC dc(this);
  137.     dc.TextOut(10, 20, CTime::GetCurrentTime().Format("%c"));
  138.  
  139. }
  140.  
  141. void CChapter03MenuView::OnRButtonDown(UINT nFlags, CPoint point) 
  142. {
  143.     // display current date/time in long format
  144.     OnTimeDateTime();
  145.  
  146. }
  147.  
  148. void CChapter03MenuView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) 
  149. {
  150.     CClientDC dc(this);
  151.     char buffer[200];
  152.     sprintf(buffer, 
  153.         "Char: %c   Repeat Count: %2d   Flags: %08x    ",
  154.         (char)nChar,
  155.         nRepCnt,
  156.         nFlags);
  157.  
  158.     dc.TextOut(10, 60, buffer);
  159.         
  160. }
  161.  
  162. void CChapter03MenuView::OnMouseMove(UINT nFlags, CPoint point) 
  163. {
  164.     // TODO: Add your message handler code here and/or call default
  165.     
  166.     CClientDC dc(this);
  167.     char buffer[200];
  168.     sprintf(buffer, 
  169.         "Mouse: %4d,%4d   Flags: %08x      ",
  170.         point.x,
  171.         point.y,
  172.         nFlags);
  173.  
  174.     dc.TextOut(10, 80, buffer);
  175. }
  176.  
  177. void CChapter03MenuView::OnTimer(UINT nIDEvent) 
  178. {
  179.     static int count = 0;
  180.     count++;
  181.     CClientDC dc(this);
  182.     char buffer[200];
  183.     sprintf(buffer, 
  184.         "Total Timer Count: %4d",
  185.         count);
  186.  
  187.     dc.TextOut(10, 100, buffer);
  188.     OnLButtonDown(0,0);
  189.     OnRButtonDown(0,0);
  190. }
  191.