DRAGPAGE.CPP
上传用户:shgx688
上传日期:2009-12-27
资源大小:855k
文件大小:3k
源码类别:

SNMP编程

开发平台:

MultiPlatform

  1. ************************************
  2.   REVISION LOG ENTRY
  3.   Revision By: Mihai Filimon
  4.   Revised on 7/22/98 9:22:22 AM
  5.   Comments: DragPage.cpp implementation for CDragPage
  6.  ************************************/
  7. #include "stdafx.h"
  8. #include "DragPage.h"
  9. #include "SheetsWnd.h"
  10. #include <math.h>
  11. // Function name : CDragPage::CDragPage
  12. // Description     : Default constructor for this object
  13. // Return type : 
  14. CDragPage::CDragPage()
  15. {
  16. Reset();
  17. m_pRectSave = new SRectSave();
  18. }
  19. // Function name : CDragPage::CDragPage
  20. // Description     : Copy constructor
  21. // Return type : 
  22. // Argument         : CDragPage& dragSource
  23. CDragPage::CDragPage(CDragPage& dragSource)
  24. {
  25. m_bDragging = dragSource.m_bDragging;
  26. m_pViewStartDrag = dragSource.m_pViewStartDrag;
  27. m_pViewTrackDrag = dragSource.m_pViewTrackDrag;
  28. m_pRectSave = NULL;
  29. }
  30. // Function name : CDragPage::~CDragPage
  31. // Description     : virtual Destructor of this object
  32. // Return type : 
  33. CDragPage::~CDragPage()
  34. {
  35. if (m_pRectSave)
  36. delete m_pRectSave;
  37. m_pRectSave = NULL;
  38. }
  39. // Function name : CDragPage::Set
  40. // Description     : Set the m_bDragging, m_pViewStartDrag to new values, and reset m_pViewTrackDrag
  41. // Return type : void 
  42. // Argument         : BOOL bDragging
  43. // Argument         : CWnd* pViewStartDrag
  44. void CDragPage::Set(BOOL bDragging , CWnd* pViewStartDrag )
  45. {
  46. m_bDragging = bDragging;
  47. m_pViewStartDrag = pViewStartDrag;
  48. SetTrackDrag(m_pViewStartDrag);
  49. }
  50. // Function name : CDragPage::SetTrackDrag
  51. // Description     : Set the m_pViewTrackDrag mamber to new value pWnd
  52. // Return type : void 
  53. // Argument         : CWnd * pWnd
  54. void CDragPage::SetTrackDrag(CWnd * pWnd)
  55. {
  56. m_pViewTrackDrag = pWnd;
  57. }
  58. // Function name : CDragPage::Reset
  59. // Description     : Reset all member variables
  60. // Return type : void 
  61. void CDragPage::Reset()
  62. {
  63. Set(FALSE,NULL);
  64. }
  65. // Function name : CDragPage::IsDragging
  66. // Description     : True if dragging
  67. // Return type : BOOL 
  68. BOOL CDragPage::IsDragging()
  69. {
  70. return m_bDragging;
  71. }
  72. // Function name : CDragPage::Draw
  73. // Description     : Draw drag object
  74. // Return type : void 
  75. // Argument         : CSheetAlpha* pSheet
  76. void CDragPage::Draw(CSheetsWnd* pSheet)
  77. {
  78. static const int arDX = 0, arDY = -5, a = 7;
  79. if (!m_pViewTrackDrag)
  80. m_pRectSave->Restore();
  81. else
  82. {
  83. CRect rt = pSheet->GetPageRect(m_pViewTrackDrag);
  84. CRect rDraw = pSheet->GetDrawRect();
  85. rt.left = min(max(rt.left, rDraw.left),rt.right);
  86. pSheet->ClientToScreen(rt);
  87. rt.top = rt.top + arDY; rt.left = rt.left + arDX;
  88. int ar3p3p2 = (int)((double)a * sqrt(3)/6);
  89. CPoint points[3];
  90.  points[0] = rt.TopLeft() + CPoint(-a / 2,-ar3p3p2);
  91.  points[1] = rt.TopLeft() + CPoint(+a / 2,-ar3p3p2);
  92.  points[2] = rt.TopLeft() + CPoint(   0   ,ar3p3p2 * 2);
  93. if (m_pRectSave->IsChanged(points[0]))
  94. {
  95. CRgn rgn;
  96. if (rgn.CreatePolygonRgn(points, 3, WINDING))
  97. {
  98. m_pRectSave->Restore();
  99. m_pRectSave->Save(CRect(points[0], CSize(a,a)));
  100. CDC* pDC = CDC::FromHandle(::GetDC(NULL));
  101. // Draw the putirin
  102. pDC->FillRgn(&rgn, &CBrush(RGB(0,0,0)));
  103. // End draw putirin
  104. ::ReleaseDC(NULL, pDC->m_hDC);
  105. }
  106. }
  107. }
  108. }