home *** CD-ROM | disk | FTP | other *** search
/ Programming Windows 95 with MFC / Programming Windows 95 with MFC (Microsoft Programming Series)(097-0001465)(1996).iso / CODE / Chap12 / Vista / VistaView.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1996-04-05  |  1.8 KB  |  69 lines

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