DragonNest/Third/XTToolkitPro/Samples/ToolkitPro/MarkupSample/MarkupStatic.cpp
2024-12-19 09:48:26 +08:00

77 lines
1.5 KiB
C++

// MarkupStatic.cpp : implementation file
//
#include "stdafx.h"
#include "MarkupSample.h"
#include "MarkupStatic.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMarkupStatic
CMarkupStatic::CMarkupStatic()
{
m_pUIElement = NULL;
}
CMarkupStatic::~CMarkupStatic()
{
MARKUP_RELEASE(m_pUIElement);
}
BEGIN_MESSAGE_MAP(CMarkupStatic, CStatic)
//{{AFX_MSG_MAP(CMarkupStatic)
ON_WM_PAINT()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMarkupStatic message handlers
void CMarkupStatic::SetMarkupText(LPCSTR lpszMarkup)
{
MARKUP_RELEASE(m_pUIElement);
m_pUIElement = Parse(lpszMarkup);
if (m_hWnd) Invalidate(FALSE);
}
void CMarkupStatic::OnPaint()
{
CPaintDC dcPaint(this);
CXTPBufferDC dcBuffer(dcPaint);
CXTPClientRect rc(this);
dcBuffer.FillSolidRect(rc, GetSysColor(COLOR_WINDOW));
if (m_pUIElement)
{
CXTPMarkupDrawingContext dc(dcBuffer);
m_pUIElement->Measure(&dc, rc.Size());
m_pUIElement->Arrange(rc);
m_pUIElement->Render(&dc);
}
}
BOOL CMarkupStatic::OnWndMsg(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult)
{
// To Handle Hyperlinks:
if (m_pUIElement)
{
CXTPMarkupContext::m_hContextWnd = m_hWnd;
if (CXTPMarkupContext::OnWndMsg(m_pUIElement, message, wParam, lParam, pResult))
return TRUE;
}
return CStatic::OnWndMsg(message, wParam, lParam, pResult);
}