XTPMarkupCanvas.cpp
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:4k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. // XTPMarkupCanvas.cpp: implementation of the CXTPMarkupCanvas class.
  2. //
  3. // This file is a part of the XTREME TOOLKIT PRO MFC class library.
  4. // (c)1998-2008 Codejock Software, All Rights Reserved.
  5. //
  6. // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
  7. // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
  8. // CONSENT OF CODEJOCK SOFTWARE.
  9. //
  10. // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
  11. // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
  12. // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
  13. // SINGLE COMPUTER.
  14. //
  15. // CONTACT INFORMATION:
  16. // support@codejock.com
  17. // http://www.codejock.com
  18. //
  19. /////////////////////////////////////////////////////////////////////////////
  20. #include "stdafx.h"
  21. #include "XTPMarkupCanvas.h"
  22. #ifdef _DEBUG
  23. #undef THIS_FILE
  24. static char THIS_FILE[]=__FILE__;
  25. #define new DEBUG_NEW
  26. #endif
  27. //////////////////////////////////////////////////////////////////////
  28. // CXTPMarkupCanvas
  29. CXTPMarkupDependencyProperty* CXTPMarkupCanvas::m_pTopProperty = NULL;
  30. CXTPMarkupDependencyProperty* CXTPMarkupCanvas::m_pRightProperty = NULL;
  31. CXTPMarkupDependencyProperty* CXTPMarkupCanvas::m_pLeftProperty = NULL;
  32. CXTPMarkupDependencyProperty* CXTPMarkupCanvas::m_pBottomProperty = NULL;
  33. IMPLEMENT_MARKUPCLASS(L"Canvas", CXTPMarkupCanvas, CXTPMarkupPanel)
  34. void CXTPMarkupCanvas::RegisterMarkupClass()
  35. {
  36. m_pTopProperty = CXTPMarkupDependencyProperty::RegisterAttached(L"Top", MARKUP_TYPE(CXTPMarkupInt), MARKUP_TYPE(CXTPMarkupCanvas));
  37. m_pRightProperty =  CXTPMarkupDependencyProperty::RegisterAttached(L"Right", MARKUP_TYPE(CXTPMarkupInt), MARKUP_TYPE(CXTPMarkupCanvas));
  38. m_pLeftProperty = CXTPMarkupDependencyProperty::RegisterAttached(L"Left", MARKUP_TYPE(CXTPMarkupInt), MARKUP_TYPE(CXTPMarkupCanvas));
  39. m_pBottomProperty = CXTPMarkupDependencyProperty::RegisterAttached(L"Bottom", MARKUP_TYPE(CXTPMarkupInt), MARKUP_TYPE(CXTPMarkupCanvas));
  40. }
  41. CXTPMarkupCanvas::CXTPMarkupCanvas()
  42. {
  43. }
  44. CXTPMarkupCanvas::~CXTPMarkupCanvas()
  45. {
  46. }
  47. void CXTPMarkupCanvas::SetLeft(CXTPMarkupUIElement* pElement, int nLeft)
  48. {
  49. pElement->SetValue(m_pLeftProperty, new CXTPMarkupInt(nLeft));
  50. }
  51. void CXTPMarkupCanvas::SetTop(CXTPMarkupUIElement* pElement, int nTop)
  52. {
  53. pElement->SetValue(m_pTopProperty, new CXTPMarkupInt(nTop));
  54. }
  55. void CXTPMarkupCanvas::SetRight(CXTPMarkupUIElement* pElement, int nRight)
  56. {
  57. pElement->SetValue(m_pRightProperty, new CXTPMarkupInt(nRight));
  58. }
  59. void CXTPMarkupCanvas::SetBottom(CXTPMarkupUIElement* pElement, int nBottom)
  60. {
  61. pElement->SetValue(m_pBottomProperty, new CXTPMarkupInt(nBottom));
  62. }
  63. CSize CXTPMarkupCanvas::MeasureOverride(CXTPMarkupDrawingContext* pDC, CSize availableSize)
  64. {
  65. int nCount = m_pChildren->GetCount();
  66. for (int i = 0; i < nCount; i++)
  67. {
  68. CXTPMarkupUIElement* pElement = m_pChildren->GetItem(i);
  69. if (pElement == NULL)
  70. continue;
  71. pElement->Measure(pDC, CSize(INT_MAX, INT_MAX));
  72. }
  73. return availableSize;
  74. }
  75. CSize CXTPMarkupCanvas::ArrangeOverride(CSize arrangeSize)
  76. {
  77. int nCount = m_pChildren->GetCount();
  78. for (int i = 0; i < nCount; i++)
  79. {
  80. CXTPMarkupUIElement* pElement = m_pChildren->GetItem(i);
  81. if (pElement == NULL)
  82. continue;
  83. CPoint pt(0, 0);
  84. CXTPMarkupInt* pLeft = (CXTPMarkupInt*)pElement->GetValue(m_pLeftProperty);
  85. if (pLeft)
  86. {
  87. pt.x = *pLeft;
  88. }
  89. else
  90. {
  91. CXTPMarkupInt* pRight = (CXTPMarkupInt*)pElement->GetValue(m_pRightProperty);
  92. if (pRight)
  93. {
  94. pt.x = arrangeSize.cx - pElement->GetDesiredSize().cx - *pRight;
  95. }
  96. }
  97. CXTPMarkupInt* pTop = (CXTPMarkupInt*)pElement->GetValue(m_pTopProperty);
  98. if (pTop)
  99. {
  100. pt.y = *pTop;
  101. }
  102. else
  103. {
  104. CXTPMarkupInt* pBotton = (CXTPMarkupInt*)pElement->GetValue(m_pBottomProperty);
  105. if (pBotton)
  106. {
  107. pt.y = arrangeSize.cy - pElement->GetDesiredSize().cy - *pBotton;
  108. }
  109. }
  110. pElement->Arrange(CRect(pt, pElement->GetDesiredSize()));
  111. }
  112. return arrangeSize;
  113. }