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

对话框与窗口

开发平台:

Visual C++

  1. // MarkupStatic.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "MarkupSample.h"
  5. #include "MarkupStatic.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////////
  12. // CMarkupStatic
  13. CMarkupStatic::CMarkupStatic()
  14. {
  15. m_pUIElement = NULL;
  16. }
  17. CMarkupStatic::~CMarkupStatic()
  18. {
  19. MARKUP_RELEASE(m_pUIElement);
  20. }
  21. BEGIN_MESSAGE_MAP(CMarkupStatic, CStatic)
  22. //{{AFX_MSG_MAP(CMarkupStatic)
  23. ON_WM_PAINT()
  24. //}}AFX_MSG_MAP
  25. END_MESSAGE_MAP()
  26. /////////////////////////////////////////////////////////////////////////////
  27. // CMarkupStatic message handlers
  28. void CMarkupStatic::SetMarkupText(LPCSTR lpszMarkup)
  29. {
  30. MARKUP_RELEASE(m_pUIElement);
  31. m_pUIElement = Parse(lpszMarkup);
  32. if (m_hWnd) Invalidate(FALSE);
  33. }
  34. void CMarkupStatic::OnPaint() 
  35. {
  36. CPaintDC dcPaint(this);
  37. CXTPBufferDC dcBuffer(dcPaint);
  38. CXTPClientRect rc(this);
  39. dcBuffer.FillSolidRect(rc, GetSysColor(COLOR_WINDOW));
  40. if (m_pUIElement)
  41. {
  42. CXTPMarkupDrawingContext dc(dcBuffer);
  43. m_pUIElement->Measure(&dc, rc.Size());
  44. m_pUIElement->Arrange(rc);
  45. m_pUIElement->Render(&dc);
  46. }
  47. }
  48. BOOL CMarkupStatic::OnWndMsg(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult)
  49. {
  50. // To Handle Hyperlinks:
  51. if (m_pUIElement)
  52. {
  53. CXTPMarkupContext::m_hContextWnd = m_hWnd;
  54. if (CXTPMarkupContext::OnWndMsg(m_pUIElement, message, wParam, lParam, pResult))
  55. return TRUE;
  56. }
  57. return CStatic::OnWndMsg(message, wParam, lParam, pResult);
  58. }