VIEW.HXX
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:3k
源码类别:

Windows编程

开发平台:

Visual C++

  1. #ifndef __VIEW_HXX_
  2. #define __VIEW_HXX_
  3. #include "canvas.hxx"
  4. //--------------------------------------------------------------------
  5. // File: View.hxx
  6. //
  7. // Classes: 
  8. //      CView          - Base class for Views 
  9. //      CScrollaleView - Scrollable View
  10. //
  11. //      CPrintCanvas  - Device context for printing
  12. //      CPrintRequest  - Print Job
  13. //
  14. // History: 22-Jan-1993 Asmusf  Created
  15. //
  16. // Copyright (C) 1993-1997 Microsoft Corp. All Rights reserved
  17. //
  18. //--------------------------------------------------------------------
  19. class CModel;
  20. //======== CView ============================================
  21. class CView
  22. {
  23. public:
  24.         CView(int cx, int cy);
  25.         void SetSize( int cx, int cy);
  26.         BOOL Paint(CCanvas& canvas, CModel * _pModel, RECT rc);
  27.         UINT Hittest(CCanvas& canvas, POINT pt, CModel * _pModel);
  28.         void Invalidate(HWND hwnd, LPRECT lpRect=NULL);
  29. protected:
  30.         void Scroll(CCanvas &canvas);
  31.         SIZE _size;
  32.         UINT _iScale;
  33.         POINT _ptOrg;
  34.         POINT _ptScroll;
  35.         POINT _ptClient;
  36. };
  37. //======== CScrollableView ==================================
  38. class CScrollableView : public CView 
  39. {
  40. public:
  41.         CScrollableView(int cx, int cy):CView(cx,cy){};
  42.         void GetScale(UINT &iScale);
  43.         void SetScale(UINT iScale);
  44.         void SetVScrollPos(HWND hwnd, WPARAM wParam, LPARAM lParam,
  45.                                 CModel * pModel);
  46.         void SetHScrollPos(HWND hwnd, WPARAM wParam, LPARAM lParam,
  47.                                 CModel * pModel);
  48. protected:
  49.         int _nHScrollPos;
  50.         int _nVScrollPos;
  51. };
  52. inline void CScrollableView::GetScale(UINT &iScale)
  53. {
  54.         iScale=_iScale;
  55. };
  56. inline void CScrollableView::SetScale(UINT iScale)
  57. {
  58.         _iScale=iScale;
  59. };
  60. //======== CPrintRequest =======================================
  61. #define PREQ_SUCCESS   NULL
  62. #define PREQ_CANCEL       1
  63. #define PREQ_USERABORT    2
  64. #define PREQ_ERRENDPAGE   4
  65. #define PREQ_ERRSTARTPAGE 8
  66. #define PREQ_ERRSTARTDOC  16
  67. #define PREQ_ERROR        32
  68. class CPrintRequest
  69. {
  70. friend class CPrintCanvas;
  71. public:
  72.         CPrintRequest(HWND hwnd, UINT minPage=1, UINT maxPage=1);
  73.         ~CPrintRequest();
  74.         UINT Print(HINSTANCE hInst, CCanvas &canvas, CModel *pModel);
  75.         BOOL Cancelled() { return _status == PREQ_CANCEL; };    
  76.         BOOL Error()     { return _status != PREQ_SUCCESS; };   
  77. protected:
  78.         HDC    _hdc;
  79.         HWND   _hwnd;
  80.         UINT   _nFromPage;
  81.         UINT   _nToPage;
  82.         UINT   _status;
  83.         HANDLE _hDevNames;
  84.         CModel* _pModel;
  85.         CView * _pView;
  86. };
  87. //======== CPrintCanvas =======================================
  88. class CPrintCanvas : public CCanvas
  89. {
  90. public:
  91.         CPrintCanvas(CPrintRequest &pr)
  92.         {
  93.             Init(pr._hdc);
  94.             pr._hdc = 0;
  95.         }
  96.         ~CPrintCanvas()
  97.         {            
  98.             DeleteDC(_hdc);     
  99.         }
  100. };
  101. extern "C" {
  102. BOOL CALLBACK PrintDlgProc
  103.    ( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam );
  104. BOOL CALLBACK AbortProc
  105.    (HDC hdcPrn, short nCode);
  106. }
  107. class CPrintAux
  108. {
  109. friend class CPrintRequest;
  110. friend BOOL CALLBACK PrintDlgProc
  111.    ( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam );
  112. friend BOOL CALLBACK AbortProc (HDC hdcPrn, short nCode);
  113.         BOOL _bUserAbort;
  114.         HWND _hDlgPrint;
  115. };
  116. #endif