home *** CD-ROM | disk | FTP | other *** search
/ Programming Windows 95 with MFC / Programming Windows 95 with MFC (Microsoft Programming Series)(097-0001465)(1996).iso / NT / CODE / CHAP14 / MTDEMO / MTVIEW.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1996-04-05  |  1.9 KB  |  73 lines

  1. //***********************************************************************
  2. //
  3. //  MTView.cpp
  4. //
  5. //***********************************************************************
  6.  
  7. #include <afxwin.h>
  8. #include <afxmt.h>
  9. #include "Resource.h"
  10. #include "MTDoc.h"
  11. #include "MTView.h"
  12.  
  13. IMPLEMENT_DYNCREATE (CMTView, CScrollView)
  14.  
  15. void CMTView::OnInitialUpdate ()
  16. {
  17.     CScrollView::OnInitialUpdate ();
  18.  
  19.     CString string;
  20.     CSize sizeTotal;
  21.  
  22.     CBitmap* pBitmap = GetDocument ()->GetBitmap ();
  23.     if (pBitmap != NULL) {
  24.         DIBSECTION ds;
  25.         pBitmap->GetObject (sizeof (DIBSECTION), &ds);
  26.         sizeTotal.cx = ds.dsBm.bmWidth;
  27.         sizeTotal.cy = ds.dsBm.bmHeight;
  28.         string.Format ("%d x %d, %d bpp", ds.dsBm.bmWidth,
  29.             ds.dsBm.bmHeight, ds.dsBmih.biBitCount);
  30.     }
  31.     else {
  32.         sizeTotal.cx = sizeTotal.cy = 0;
  33.         string.Empty ();
  34.     }
  35.  
  36.     AfxGetMainWnd ()->SendMessage (WM_USER_UPDATE_STATS, 0,
  37.         (LPARAM) (LPCTSTR) string);
  38.     SetScrollSizes (MM_TEXT, sizeTotal);
  39. }
  40.  
  41. void CMTView::OnDraw (CDC* pDC)
  42. {
  43.     CMTDoc* pDoc = GetDocument ();
  44.     CBitmap* pBitmap = pDoc->GetBitmap ();
  45.  
  46.     if (pBitmap != NULL) {
  47.         CPalette* pOldPalette;
  48.         CPalette* pPalette = pDoc->GetPalette ();
  49.  
  50.         if (pPalette != NULL) {
  51.             pOldPalette = pDC->SelectPalette (pPalette, FALSE);
  52.             pDC->RealizePalette ();
  53.         }
  54.  
  55.         DIBSECTION ds;
  56.         pBitmap->GetObject (sizeof (DIBSECTION), &ds);
  57.  
  58.         CDC memDC;
  59.         memDC.CreateCompatibleDC (pDC);
  60.         GetDocument ()->m_criticalSection.Lock ();
  61.         CBitmap* pOldBitmap = memDC.SelectObject (pBitmap);
  62.  
  63.         pDC->BitBlt (0, 0, ds.dsBm.bmWidth, ds.dsBm.bmHeight, &memDC,
  64.             0, 0, SRCCOPY);
  65.  
  66.         memDC.SelectObject (pOldBitmap);
  67.         GetDocument ()->m_criticalSection.Unlock ();
  68.  
  69.         if (pPalette != NULL)
  70.             pDC->SelectPalette (pPalette, FALSE);
  71.     }
  72. }
  73.