CCachedScrollViewPView.cpp
上传用户:ynjin1970
上传日期:2014-10-13
资源大小:6438k
文件大小:4k
源码类别:

中间件编程

开发平台:

Visual C++

  1. // CCachedScrollViewPView.cpp : implementation of the CCCachedScrollViewPView class
  2. //
  3. #include "stdafx.h"
  4. #include "CCachedScrollViewP.h"
  5. #include "mainfrm.h"
  6. #include "CCachedScrollViewPDoc.h"
  7. #include "CCachedScrollViewPView.h"
  8. #include "CachedScrollView.h"
  9. #ifdef _DEBUG
  10. #define new DEBUG_NEW
  11. #undef THIS_FILE
  12. static char THIS_FILE[] = __FILE__;
  13. #endif
  14. /////////////////////////////////////////////////////////////////////////////
  15. // CCCachedScrollViewPView
  16. IMPLEMENT_DYNCREATE(CCCachedScrollViewPView, CCachedScrollView)
  17. BEGIN_MESSAGE_MAP(CCCachedScrollViewPView, CCachedScrollView)
  18. //{{AFX_MSG_MAP(CCCachedScrollViewPView)
  19. // NOTE - the ClassWizard will add and remove mapping macros here.
  20. //    DO NOT EDIT what you see in these blocks of generated code!
  21. //}}AFX_MSG_MAP
  22. // Standard printing commands
  23. ON_COMMAND(ID_FILE_PRINT, CScrollView::OnFilePrint)
  24. ON_COMMAND(ID_FILE_PRINT_DIRECT, CScrollView::OnFilePrint)
  25. ON_COMMAND(ID_FILE_PRINT_PREVIEW, CScrollView::OnFilePrintPreview)
  26. END_MESSAGE_MAP()
  27. /////////////////////////////////////////////////////////////////////////////
  28. // CCCachedScrollViewPView construction/destruction
  29. CCCachedScrollViewPView::CCCachedScrollViewPView()
  30. {
  31. // TODO: add construction code here
  32. }
  33. CCCachedScrollViewPView::~CCCachedScrollViewPView()
  34. {
  35. }
  36. BOOL CCCachedScrollViewPView::PreCreateWindow(CREATESTRUCT& cs)
  37. {
  38. // TODO: Modify the Window class or styles here by modifying
  39. //  the CREATESTRUCT cs
  40. return CScrollView::PreCreateWindow(cs);
  41. }
  42. /////////////////////////////////////////////////////////////////////////////
  43. // CCCachedScrollViewPView drawing
  44. void CCCachedScrollViewPView::OnDraw(CDC* pDC)
  45. {
  46. CCCachedScrollViewPDoc* pDoc = GetDocument();
  47. ASSERT_VALID(pDoc);    
  48. pDC->BitBlt(0,0,m_nBmpWidth,m_nBmpHeight,
  49.         &m_MemDC,0,0,SRCCOPY);
  50.     SetScrollSizes(MM_TEXT, CSize(m_nBmpWidth,m_nBmpHeight));
  51.     CMainFrame *pParentFrame=(CMainFrame *)this->GetParentFrame();
  52.     pParentFrame->RecalcLayout();
  53.     ResizeParentToFit();  
  54. }
  55. void CCCachedScrollViewPView::OnInitialUpdate()
  56. {
  57. //CScrollView::OnInitialUpdate();
  58. CSize sizeTotal;
  59. // TODO: calculate the total size of this view
  60. CDC *pDC = this->GetDC();
  61.     m_MemDC.CreateCompatibleDC(pDC);
  62.     m_bmpView.LoadBitmap(IDB_BITMAP1);    
  63.     // 这里IDB_BITMAP1是已经加入到工程资源中的BMP文件,当然也可以用文件的方式将图片从硬盘载入到内存中然后进行显示。
  64.     m_MemDC.SelectObject(&m_bmpView);
  65.     BITMAP Bitmap;
  66.     m_bmpView.GetBitmap(&Bitmap);
  67.     m_nBmpHeight = Bitmap.bmHeight;
  68.     m_nBmpWidth = Bitmap.bmWidth;
  69.     CSize size(m_nBmpWidth,m_nBmpHeight);
  70.     SetScrollSizes(MM_TEXT,size);
  71. SetCacheSize(size);
  72. this->ReleaseDC(pDC); 
  73. }
  74. /////////////////////////////////////////////////////////////////////////////
  75. // CCCachedScrollViewPView printing
  76. BOOL CCCachedScrollViewPView::OnPreparePrinting(CPrintInfo* pInfo)
  77. {
  78. // default preparation
  79. return DoPreparePrinting(pInfo);
  80. }
  81. void CCCachedScrollViewPView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
  82. {
  83. // TODO: add extra initialization before printing
  84. }
  85. void CCCachedScrollViewPView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
  86. {
  87. // TODO: add cleanup after printing
  88. }
  89. /////////////////////////////////////////////////////////////////////////////
  90. // CCCachedScrollViewPView diagnostics
  91. #ifdef _DEBUG
  92. void CCCachedScrollViewPView::AssertValid() const
  93. {
  94. CScrollView::AssertValid();
  95. }
  96. void CCCachedScrollViewPView::Dump(CDumpContext& dc) const
  97. {
  98. CScrollView::Dump(dc);
  99. }
  100. CCCachedScrollViewPDoc* CCCachedScrollViewPView::GetDocument() // non-debug version is inline
  101. {
  102. ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CCCachedScrollViewPDoc)));
  103. return (CCCachedScrollViewPDoc*)m_pDocument;
  104. }
  105. #endif //_DEBUG
  106. /////////////////////////////////////////////////////////////////////////////
  107. // CCCachedScrollViewPView message handlers