home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / common / msdev98 / bin / ide / devgal.pkg / TEMPLATE / 22335 < prev    next >
Text File  |  1998-06-18  |  4KB  |  160 lines

  1. // $$VAL:BaseViewCpp$$ : implementation of the $$VAL:BaseViewClass$$ class
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "$$VAL:ResInclude$$"
  6.  
  7. #include "$$VAL:BaseViewHeader$$"
  8.  
  9. #ifdef _DEBUG
  10. #undef THIS_FILE
  11. static char THIS_FILE[] = __FILE__;
  12. #endif
  13.  
  14. /////////////////////////////////////////////////////////////////////////////
  15. // $$VAL:BaseViewClass$$
  16.  
  17. IMPLEMENT_DYNCREATE($$VAL:BaseViewClass$$, CScrollView)
  18.  
  19. BEGIN_MESSAGE_MAP($$VAL:BaseViewClass$$, CScrollView)
  20.     //{{AFX_MSG_MAP($$VAL:BaseViewClass$$)
  21.         // NOTE - the ClassWizard will add and remove mapping macros here.
  22.         //    DO NOT EDIT what you see in these blocks of generated code!
  23.     //}}AFX_MSG_MAP
  24.     // Standard printing commands
  25.     ON_COMMAND(ID_FILE_PRINT, CScrollView::OnFilePrint)
  26.     ON_COMMAND(ID_FILE_PRINT_PREVIEW, CScrollView::OnFilePrintPreview)
  27.     ON_WM_PALETTECHANGED()
  28.     ON_WM_QUERYNEWPALETTE()
  29. END_MESSAGE_MAP()
  30.  
  31. /////////////////////////////////////////////////////////////////////////////
  32. // $$VAL:BaseViewClass$$ construction/destruction
  33.  
  34. $$VAL:BaseViewClass$$::$$VAL:BaseViewClass$$()
  35. {
  36. }
  37.  
  38. $$VAL:BaseViewClass$$::~$$VAL:BaseViewClass$$()
  39. {
  40. }
  41.  
  42. /////////////////////////////////////////////////////////////////////////////
  43. // $$VAL:BaseViewClass$$ drawing
  44.  
  45. void $$VAL:BaseViewClass$$::OnDraw(CDC* pDC)
  46. {
  47.     $$VAL:BaseDocClass$$* pDoc = GetDocument();
  48.     ASSERT_VALID(pDoc);
  49.  
  50.     if (pDoc->m_Bitmap.m_hObject != NULL)
  51.     {
  52.         CDC dc;
  53.         VERIFY( dc.CreateCompatibleDC(pDC) );
  54.         CBitmap *pOldBitmap = dc.SelectObject( &pDoc->m_Bitmap );
  55.  
  56.         CPalette *pOldPalette;
  57.         if (pDoc->GetPalette() != NULL)
  58.         {
  59.             pOldPalette = pDC->SelectPalette( pDoc->GetPalette(), TRUE );
  60.             pDC->RealizePalette();
  61.         }
  62.  
  63.         CSize sz = pDoc->GetSize();
  64.         pDC->BitBlt( 0, 0, sz.cx, sz.cy, &dc, 0, 0, SRCCOPY );
  65.  
  66.         if (pDoc->GetPalette() != NULL)
  67.             pDC->SelectPalette( pOldPalette, TRUE );
  68.     }
  69. }
  70.  
  71. /////////////////////////////////////////////////////////////////////////////
  72. // $$VAL:BaseViewClass$$ printing
  73.  
  74. BOOL $$VAL:BaseViewClass$$::OnPreparePrinting(CPrintInfo* pInfo)
  75. {
  76.     // default preparation
  77.     return DoPreparePrinting(pInfo);
  78. }
  79.  
  80. void $$VAL:BaseViewClass$$::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
  81. {
  82.     // TODO: add extra initialization before printing
  83. }
  84.  
  85. void $$VAL:BaseViewClass$$::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
  86. {
  87.     // TODO: add cleanup after printing
  88. }
  89.  
  90. /////////////////////////////////////////////////////////////////////////////
  91. // $$VAL:BaseViewClass$$ diagnostics
  92.  
  93. #ifdef _DEBUG
  94. void $$VAL:BaseViewClass$$::AssertValid() const
  95. {
  96.     CScrollView::AssertValid();
  97. }
  98.  
  99. void $$VAL:BaseViewClass$$::Dump(CDumpContext& dc) const
  100. {
  101.     CScrollView::Dump(dc);
  102. }
  103.  
  104. $$VAL:DocClass$$* $$VAL:BaseViewClass$$::GetDocument() // non-debug version is inline
  105. {
  106.     ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS($$VAL:DocClass$$)));
  107.     return ($$VAL:DocClass$$*)m_pDocument;
  108. }
  109. #endif //_DEBUG
  110.  
  111. /////////////////////////////////////////////////////////////////////////////
  112. // $$VAL:BaseViewClass$$ message handlers
  113.  
  114. void $$VAL:BaseViewClass$$::OnInitialUpdate() 
  115. {
  116.     CScrollView::OnInitialUpdate();
  117.  
  118.     OnUpdate(NULL, 0, NULL);
  119. }
  120.  
  121. void $$VAL:BaseViewClass$$::OnUpdate(CScrollView* pSender, LPARAM lHint, CObject* pHint) 
  122. {
  123.     $$VAL:BaseDocClass$$* pDoc = GetDocument();
  124.     ASSERT_VALID(pDoc);
  125.  
  126.     SetScrollSizes(MM_TEXT, pDoc->GetSize());
  127.     Invalidate();
  128. }
  129.  
  130. void $$VAL:BaseViewClass$$::OnPaletteChanged(CWnd* pFocusWnd) 
  131. {
  132.     if (pFocusWnd == this || IsChild(pFocusWnd))
  133.         return;
  134.  
  135.     OnQueryNewPalette();    
  136. }
  137.  
  138. BOOL $$VAL:BaseViewClass$$::OnQueryNewPalette()
  139. {
  140.     $$VAL:BaseDocClass$$* pDoc = ($$VAL:BaseDocClass$$ *)GetDocument();
  141.     if (pDoc == NULL || pDoc->GetPalette() == NULL)
  142.         return FALSE;
  143.  
  144.     // BLOCK: Realize our new palette
  145.     {
  146.         CClientDC dc(this);
  147.         CPalette* pOldPalette = dc.SelectPalette(pDoc->GetPalette(),
  148.             GetCurrentMessage()->message == WM_PALETTECHANGED);
  149.         UINT nChanged = dc.RealizePalette();
  150.         dc.SelectPalette(pOldPalette, TRUE);
  151.  
  152.         if (nChanged == 0)    // no change to our mapping
  153.             return FALSE;
  154.     }
  155.  
  156.     // some changes have been made; invalidate our view
  157.     Invalidate(FALSE);
  158.  
  159.     return TRUE;
  160. }