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

  1. // TbarView.cpp : implementation of the CAdditionalToolbarsView class
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "Toolbar.h"
  6.  
  7. #include "TBarDoc.h"
  8. #include "TbarView.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. // CAdditionalToolbarsView
  23.  
  24. IMPLEMENT_DYNCREATE(CAdditionalToolbarsView, CView)
  25.  
  26. BEGIN_MESSAGE_MAP(CAdditionalToolbarsView, CView)
  27.     //{{AFX_MSG_MAP(CAdditionalToolbarsView)
  28.         // NOTE - the ClassWizard will add and remove mapping macros here.
  29.         //    DO NOT EDIT what you see in these blocks of generated code!
  30.     //}}AFX_MSG_MAP
  31.     ON_COMMAND_RANGE(ID_COLORS_BLACK, ID_COLORS_BLUE, OnColors)
  32.     ON_UPDATE_COMMAND_UI_RANGE(ID_COLORS_BLACK, ID_COLORS_BLUE, OnUpdateColors)
  33. END_MESSAGE_MAP()
  34.  
  35. /////////////////////////////////////////////////////////////////////////////
  36. // CAdditionalToolbarsView construction/destruction
  37.  
  38. CAdditionalToolbarsView::CAdditionalToolbarsView()
  39. {
  40. }
  41.  
  42. CAdditionalToolbarsView::~CAdditionalToolbarsView()
  43. {
  44. }
  45.  
  46. BOOL CAdditionalToolbarsView::PreCreateWindow(CREATESTRUCT& cs)
  47. {
  48.     return CView::PreCreateWindow(cs);
  49. }
  50.  
  51. /////////////////////////////////////////////////////////////////////////////
  52. // CAdditionalToolbarsView drawing
  53.  
  54. void CAdditionalToolbarsView::OnDraw(CDC* pDC)
  55. {
  56.     CAdditionalToolbarsDoc* pDoc = GetDocument();
  57.     ASSERT_VALID(pDoc);
  58.  
  59.     CRect r;
  60.     GetClientRect(&r);
  61.     int x = r.right / 2, y = r.bottom / 2;
  62.  
  63.     pDC->SetTextColor(pDoc->GetColor());
  64.     pDC->SetTextAlign (TA_CENTER | TA_BASELINE);
  65.     pDC->TextOut (x, y, pDoc->GetPhrase());
  66. }
  67.  
  68. /////////////////////////////////////////////////////////////////////////////
  69. // CAdditionalToolbarsView diagnostics
  70.  
  71. #ifdef _DEBUG
  72. void CAdditionalToolbarsView::AssertValid() const
  73. {
  74.     CView::AssertValid();
  75. }
  76.  
  77. void CAdditionalToolbarsView::Dump(CDumpContext& dc) const
  78. {
  79.     CView::Dump(dc);
  80. }
  81.  
  82. // non-debug version is inline
  83. CAdditionalToolbarsDoc* CAdditionalToolbarsView::GetDocument()
  84. {
  85.     ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CAdditionalToolbarsDoc)));
  86.     return (CAdditionalToolbarsDoc*)m_pDocument;
  87. }
  88. #endif //_DEBUG
  89.  
  90. /////////////////////////////////////////////////////////////////////////////
  91. // CAdditionalToolbarsView message handlers
  92. void CAdditionalToolbarsView::OnColors(UINT nID)
  93. {
  94.     CAdditionalToolbarsDoc* pDoc = GetDocument();
  95.     ASSERT_VALID(pDoc);
  96.  
  97.     pDoc->SetColor(IDtoColorRef(nID));
  98.     Invalidate();
  99. }
  100.  
  101. void CAdditionalToolbarsView::OnUpdateColors(CCmdUI* pCmdUI)
  102. {
  103.     CAdditionalToolbarsDoc* pDoc = GetDocument();
  104.     ASSERT_VALID(pDoc);
  105.  
  106.     pCmdUI->SetCheck(pDoc->GetColor() == IDtoColorRef(pCmdUI->m_nID));
  107. }
  108.  
  109. // This function converts one of the 4 Command IDs to a COLORREF value.
  110. COLORREF CAdditionalToolbarsView::IDtoColorRef(int nID)
  111. {
  112.     switch (nID)
  113.     {
  114.         case ID_COLORS_RED:
  115.             return RED;
  116.         case ID_COLORS_GREEN:
  117.             return GREEN;        
  118.         case ID_COLORS_BLUE:
  119.             return BLUE;
  120.         default:
  121.             return BLACK;        
  122.     }
  123. }
  124.