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

对话框与窗口

开发平台:

Visual C++

  1. // XTPMarkupRender.cpp: implementation.
  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. #ifdef _XTP_INCLUDE_MARKUP
  22. #include "Markup/XTPMarkupContext.h"
  23. #include "Markup/XTPMarkupUIElement.h"
  24. #include "Markup/XTPMarkupDrawingContext.h"
  25. #include "XTPMarkupRender.h"
  26. CXTPMarkupContext* AFX_CDECL XTPMarkupCreateContext(HWND hWnd /*= NULL*/)
  27. {
  28. CXTPMarkupContext* pContext = new CXTPMarkupContext();
  29. pContext->m_hContextWnd = hWnd;
  30. return pContext;
  31. }
  32. void AFX_CDECL XTPMarkupReleaseContext(CXTPMarkupContext*& pContext)
  33. {
  34. if (pContext)
  35. {
  36. pContext->Release();
  37. pContext = NULL;
  38. }
  39. }
  40. void AFX_CDECL XTPMarkupReleaseElement(CXTPMarkupUIElement*& pElement)
  41. {
  42. if (pElement)
  43. {
  44. pElement->Release();
  45. pElement = NULL;
  46. }
  47. }
  48. CXTPMarkupUIElement* AFX_CDECL XTPMarkupParseText(CXTPMarkupContext* pContext, LPCTSTR lpszMarkup)
  49. {
  50. if (!pContext)
  51. return NULL;
  52. return pContext->Parse(lpszMarkup);
  53. }
  54. CXTPMarkupContext* AFX_CDECL XTPMarkupElementContext(CXTPMarkupUIElement* pElement) {
  55. return pElement ? pElement->GetMarkupContext() : NULL;
  56. }
  57. CSize AFX_CDECL XTPMarkupMeasureElement(CXTPMarkupUIElement* pElement, int cxAvail /*= INT_MAX*/, int cyAvail /*= INT_MAX*/)
  58. {
  59. if (!pElement)
  60. return CSize(0, 0);
  61. CXTPMarkupDrawingContext dc;
  62. pElement->Measure(&dc, CSize(cxAvail, cyAvail));
  63. return pElement->GetDesiredSize();
  64. }
  65. void AFX_CDECL XTPMarkupRenderElement(CXTPMarkupUIElement* pElement, HDC hDC, LPCRECT lpRect)
  66. {
  67. if (!pElement)
  68. return;
  69. if (!hDC || !lpRect)
  70. return;
  71. CRect rc(lpRect);
  72. CXTPMarkupDrawingContext dc(hDC);
  73. pElement->Arrange(rc);
  74. pElement->Render(&dc);
  75. }
  76. void AFX_CDECL XTPMarkupSetDefaultFont(CXTPMarkupContext* pContext, HFONT hFont, COLORREF clrText)
  77. {
  78. if (!pContext)
  79. return;
  80. if (hFont)
  81. {
  82. pContext->SetDefaultFont(hFont);
  83. }
  84. if (clrText != (COLORREF)-1)
  85. {
  86. pContext->SetDefaultTextColor(clrText);
  87. }
  88. }
  89. BOOL AFX_CDECL XTPMarkupRelayMessage(CXTPMarkupUIElement* pElement, UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult)
  90. {
  91. if (pElement && pElement->GetMarkupContext())
  92. return pElement->GetMarkupContext()->OnWndMsg(pElement, message, wParam, lParam, pResult);
  93. return FALSE;
  94. }
  95. #endif