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

  1. // MenuView.cpp : implementation of the CMenus2View class
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "Menus2.h"
  6.  
  7. #include "Menu2Doc.h"
  8. #include "MenuView.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. // CMenus2View
  23.  
  24. IMPLEMENT_DYNCREATE(CMenus2View, CView)
  25.  
  26. BEGIN_MESSAGE_MAP(CMenus2View, CView)
  27.     //{{AFX_MSG_MAP(CMenus2View)
  28.     ON_COMMAND(ID_COLORS_BLACK, OnColorsBlack)
  29.     ON_UPDATE_COMMAND_UI(ID_COLORS_BLACK, OnUpdateColorsBlack)
  30.     ON_COMMAND(ID_COLORS_BLUE, OnColorsBlue)
  31.     ON_UPDATE_COMMAND_UI(ID_COLORS_BLUE, OnUpdateColorsBlue)
  32.     ON_COMMAND(ID_COLORS_GREEN, OnColorsGreen)
  33.     ON_UPDATE_COMMAND_UI(ID_COLORS_GREEN, OnUpdateColorsGreen)
  34.     ON_COMMAND(ID_COLORS_RED, OnColorsRed)
  35.     ON_UPDATE_COMMAND_UI(ID_COLORS_RED, OnUpdateColorsRed)
  36.     //}}AFX_MSG_MAP
  37. END_MESSAGE_MAP()
  38.  
  39. /////////////////////////////////////////////////////////////////////////////
  40. // CMenus2View construction/destruction
  41.  
  42. CMenus2View::CMenus2View()
  43. {
  44. }
  45.  
  46. CMenus2View::~CMenus2View()
  47. {
  48. }
  49.  
  50. BOOL CMenus2View::PreCreateWindow(CREATESTRUCT& cs)
  51. {
  52.     return CView::PreCreateWindow(cs);
  53. }
  54.  
  55. /////////////////////////////////////////////////////////////////////////////
  56. // CMenus2View drawing
  57.  
  58. void CMenus2View::OnDraw(CDC* pDC)
  59. {
  60.     CMenus2Doc* 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. // CMenus2View diagnostics
  74.  
  75. #ifdef _DEBUG
  76. void CMenus2View::AssertValid() const
  77. {
  78.     CView::AssertValid();
  79. }
  80.  
  81. void CMenus2View::Dump(CDumpContext& dc) const
  82. {
  83.     CView::Dump(dc);
  84. }
  85.  
  86. CMenus2Doc* CMenus2View::GetDocument() // non-debug version is inline
  87. {
  88.     ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMenus2Doc)));
  89.     return (CMenus2Doc*)m_pDocument;
  90. }
  91. #endif //_DEBUG
  92.  
  93. /////////////////////////////////////////////////////////////////////////////
  94. // CMenus2View message handlers
  95.  
  96. void CMenus2View::OnColorsBlack() 
  97. {
  98.     CMenus2Doc* pDoc = GetDocument();
  99.     ASSERT_VALID(pDoc);
  100.  
  101.     pDoc->SetColor(BLACK);
  102.     Invalidate();
  103. }
  104.  
  105. void CMenus2View::OnColorsBlue() 
  106. {
  107.     CMenus2Doc* pDoc = GetDocument();
  108.     ASSERT_VALID(pDoc);
  109.  
  110.     pDoc->SetColor(BLUE);
  111.     Invalidate();
  112. }
  113.  
  114. void CMenus2View::OnColorsGreen() 
  115. {
  116.     CMenus2Doc* pDoc = GetDocument();
  117.     ASSERT_VALID(pDoc);
  118.  
  119.     pDoc->SetColor(GREEN);
  120.     Invalidate();
  121. }
  122.  
  123. void CMenus2View::OnColorsRed() 
  124. {
  125.     CMenus2Doc* pDoc = GetDocument();
  126.     ASSERT_VALID(pDoc);
  127.  
  128.     pDoc->SetColor(RED);
  129.     Invalidate();
  130. }
  131.  
  132. void CMenus2View::OnUpdateColorsBlack(CCmdUI* pCmdUI) 
  133. {
  134.     CMenus2Doc* pDoc = GetDocument();
  135.     ASSERT_VALID(pDoc);
  136.  
  137.     pCmdUI->SetCheck(pDoc->GetColor() == BLACK);
  138. }
  139.  
  140. void CMenus2View::OnUpdateColorsBlue(CCmdUI* pCmdUI) 
  141. {
  142.     CMenus2Doc* pDoc = GetDocument();
  143.     ASSERT_VALID(pDoc);
  144.  
  145.     pCmdUI->SetCheck(pDoc->GetColor() == BLUE);
  146. }
  147.  
  148. void CMenus2View::OnUpdateColorsGreen(CCmdUI* pCmdUI) 
  149. {
  150.     CMenus2Doc* pDoc = GetDocument();
  151.     ASSERT_VALID(pDoc);
  152.  
  153.     pCmdUI->SetCheck(pDoc->GetColor() == GREEN);
  154. }
  155.  
  156. void CMenus2View::OnUpdateColorsRed(CCmdUI* pCmdUI) 
  157. {
  158.     CMenus2Doc* pDoc = GetDocument();
  159.     ASSERT_VALID(pDoc);
  160.  
  161.     pCmdUI->SetCheck(pDoc->GetColor() == RED);
  162. }
  163.