home *** CD-ROM | disk | FTP | other *** search
/ Mastering MFC Development / MMD.ISO / samples / c05 / tool / toolview.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1997-02-20  |  3.4 KB  |  164 lines

  1. // ToolView.cpp : implementation of the CToolView class
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "Tool.h"
  6.  
  7. #include "ToolDoc.h"
  8. #include "ToolView.h"
  9.  
  10. #ifdef _DEBUG
  11. #define new DEBUG_NEW
  12. #undef THIS_FILE
  13. static char THIS_FILE[] = __FILE__;
  14. #endif
  15.  
  16. const COLORREF BLACK=RGB(0,0,0);
  17. const COLORREF RED=RGB(255,0,0);
  18. const COLORREF GREEN=RGB(0,255,0);
  19. const COLORREF BLUE=RGB(0,0,255);
  20.  
  21. /////////////////////////////////////////////////////////////////////////////
  22. // CToolView
  23.  
  24. IMPLEMENT_DYNCREATE(CToolView, CView)
  25.  
  26. BEGIN_MESSAGE_MAP(CToolView, CView)
  27.     //{{AFX_MSG_MAP(CToolView)
  28.     ON_COMMAND(ID_COLORS_BLACK, OnColorsBlack)
  29.     ON_COMMAND(ID_COLORS_BLUE, OnColorsBlue)
  30.     ON_COMMAND(ID_COLORS_GREEN, OnColorsGreen)
  31.     ON_COMMAND(ID_COLORS_RED, OnColorsRed)
  32.     ON_UPDATE_COMMAND_UI(ID_COLORS_BLACK, OnUpdateColorsBlack)
  33.     ON_UPDATE_COMMAND_UI(ID_COLORS_BLUE, OnUpdateColorsBlue)
  34.     ON_UPDATE_COMMAND_UI(ID_COLORS_GREEN, OnUpdateColorsGreen)
  35.     ON_UPDATE_COMMAND_UI(ID_COLORS_RED, OnUpdateColorsRed)
  36.     //}}AFX_MSG_MAP
  37. END_MESSAGE_MAP()
  38.  
  39. /////////////////////////////////////////////////////////////////////////////
  40. // CToolView construction/destruction
  41.  
  42. CToolView::CToolView()
  43. {
  44. }
  45.  
  46. CToolView::~CToolView()
  47. {
  48. }
  49.  
  50. BOOL CToolView::PreCreateWindow(CREATESTRUCT& cs)
  51. {
  52.     return CView::PreCreateWindow(cs);
  53. }
  54.  
  55. /////////////////////////////////////////////////////////////////////////////
  56. // CToolView drawing
  57.  
  58. void CToolView::OnDraw(CDC* pDC)
  59. {
  60.     CToolDoc* pDoc = GetDocument();
  61.     ASSERT_VALID(pDoc);
  62.  
  63.     CRect r;
  64.     GetClientRect(&r);
  65.     int x = r.right / 2, y = r.bottom / 2;
  66.  
  67.     pDC->SetTextColor(pDoc->GetColor());
  68.     pDC->SetTextAlign (TA_CENTER | TA_BASELINE);
  69.     pDC->TextOut (x, y, pDoc->GetPhrase());
  70. }
  71.  
  72. /////////////////////////////////////////////////////////////////////////////
  73. // CToolView diagnostics
  74.  
  75. #ifdef _DEBUG
  76. void CToolView::AssertValid() const
  77. {
  78.     CView::AssertValid();
  79. }
  80.  
  81. void CToolView::Dump(CDumpContext& dc) const
  82. {
  83.     CView::Dump(dc);
  84. }
  85.  
  86. CToolDoc* CToolView::GetDocument() // non-debug version is inline
  87. {
  88.     ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CToolDoc)));
  89.     return (CToolDoc*)m_pDocument;
  90. }
  91. #endif //_DEBUG
  92.  
  93. /////////////////////////////////////////////////////////////////////////////
  94. // CToolView message handlers
  95.  
  96.  
  97. void CToolView::OnColorsBlack() 
  98. {
  99.     CToolDoc* pDoc = GetDocument();
  100.     ASSERT_VALID(pDoc);
  101.  
  102.     pDoc->SetColor(BLACK);
  103.     Invalidate();
  104. }
  105.  
  106. void CToolView::OnColorsBlue() 
  107. {
  108.     CToolDoc* pDoc = GetDocument();
  109.     ASSERT_VALID(pDoc);
  110.     
  111.     pDoc->SetColor(BLUE);
  112.     Invalidate();
  113. }
  114.  
  115. void CToolView::OnColorsGreen() 
  116. {
  117.     CToolDoc* pDoc = GetDocument();
  118.     ASSERT_VALID(pDoc);
  119.  
  120.     pDoc->SetColor(GREEN);
  121.     Invalidate();
  122. }
  123.  
  124. void CToolView::OnColorsRed() 
  125. {
  126.     CToolDoc* pDoc = GetDocument();
  127.     ASSERT_VALID(pDoc);
  128.  
  129.     pDoc->SetColor(RED);
  130.     Invalidate();
  131. }
  132.  
  133. void CToolView::OnUpdateColorsBlack(CCmdUI* pCmdUI) 
  134. {
  135.     CToolDoc* pDoc = GetDocument();
  136.     ASSERT_VALID(pDoc);
  137.  
  138.     pCmdUI->Enable(pDoc->GetColor() != BLACK);
  139. }
  140.  
  141. void CToolView::OnUpdateColorsBlue(CCmdUI* pCmdUI) 
  142. {
  143.     CToolDoc* pDoc = GetDocument();
  144.     ASSERT_VALID(pDoc);
  145.  
  146.     pCmdUI->Enable(pDoc->GetColor() != BLUE);
  147. }
  148.  
  149. void CToolView::OnUpdateColorsGreen(CCmdUI* pCmdUI) 
  150. {
  151.     CToolDoc* pDoc = GetDocument();
  152.     ASSERT_VALID(pDoc);
  153.  
  154.     pCmdUI->Enable(pDoc->GetColor() != GREEN);
  155. }
  156.  
  157. void CToolView::OnUpdateColorsRed(CCmdUI* pCmdUI) 
  158. {
  159.     CToolDoc* pDoc = GetDocument();
  160.     ASSERT_VALID(pDoc);
  161.  
  162.     pCmdUI->Enable(pDoc->GetColor() != RED);
  163. }
  164.