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

对话框与窗口

开发平台:

Visual C++

  1. // XTPMarkupPanel.cpp: implementation of the CXTPMarkupPanel 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 "XTPMarkupPanel.h"
  22. #include "XTPMarkupBuilder.h"
  23. #include "XTPMarkupDrawingContext.h"
  24. #ifdef _DEBUG
  25. #undef THIS_FILE
  26. static char THIS_FILE[]=__FILE__;
  27. #define new DEBUG_NEW
  28. #endif
  29. //////////////////////////////////////////////////////////////////////////
  30. // CXTPMarkupUIElementCollection
  31. CXTPMarkupUIElementCollection::CXTPMarkupUIElementCollection()
  32. {
  33. m_pElementType = MARKUP_TYPE(CXTPMarkupUIElement);
  34. }
  35. CXTPMarkupUIElementCollection::~CXTPMarkupUIElementCollection()
  36. {
  37. }
  38. //////////////////////////////////////////////////////////////////////
  39. // Construction/Destruction
  40. //////////////////////////////////////////////////////////////////////
  41. CXTPMarkupDependencyProperty* CXTPMarkupPanel::m_pBackgroundProperty = NULL;
  42. IMPLEMENT_MARKUPCLASS(L"Panel", CXTPMarkupPanel, CXTPMarkupFrameworkElement)
  43. void CXTPMarkupPanel::RegisterMarkupClass()
  44. {
  45. m_pBackgroundProperty = CXTPMarkupDependencyProperty::Register(L"Background", MARKUP_TYPE(CXTPMarkupBrush), MARKUP_TYPE(CXTPMarkupPanel),
  46. new CXTPMarkupPropertyMetadata(NULL, CXTPMarkupPropertyMetadata::flagAffectsRender));
  47. }
  48. CXTPMarkupPanel::CXTPMarkupPanel()
  49. {
  50. m_pChildren = new CXTPMarkupUIElementCollection();
  51. m_pChildren->SetLogicalParent(this);
  52. }
  53. CXTPMarkupPanel::~CXTPMarkupPanel()
  54. {
  55. if (m_pChildren)
  56. {
  57. m_pChildren->SetLogicalParent(NULL);
  58. m_pChildren->Release();
  59. }
  60. }
  61. void CXTPMarkupPanel::SetContentObject(CXTPMarkupBuilder* pBuilder, CXTPMarkupObject* pContent)
  62. {
  63. m_pChildren->SetContentObject(pBuilder, pContent);
  64. }
  65. BOOL CXTPMarkupPanel::HasContentObject() const
  66. {
  67. return m_pChildren->HasContentObject();
  68. }
  69. CXTPMarkupBrush* CXTPMarkupPanel::GetBackground() const
  70. {
  71. return MARKUP_STATICCAST(CXTPMarkupBrush, GetValue(m_pBackgroundProperty));
  72. }
  73. void CXTPMarkupPanel::SetBackground(CXTPMarkupBrush* brush)
  74. {
  75. SetValue(m_pBackgroundProperty, brush);
  76. }
  77. void CXTPMarkupPanel::OnRender(CXTPMarkupDrawingContext* pDC)
  78. {
  79. CSize szRender = GetRenderSize();
  80. if (szRender.cx <= 0 || szRender.cy <= 0)
  81. return;
  82. CXTPMarkupBrush* pBackground = GetBackground();
  83. if (pBackground)
  84. {
  85.   pDC->DrawRectangle(pBackground, CRect(0, 0, szRender.cx, szRender.cy));
  86. }
  87. }
  88. CXTPMarkupInputElement* CXTPMarkupPanel::InputHitTestOverride(CPoint /*point*/) const
  89. {
  90. return GetBackground() != NULL ? (CXTPMarkupInputElement*)this : NULL;
  91. }