// TestMarkupDlg.cpp
//
// (c)1998-2025 Codejock Software, All Rights Reserved.
//
// THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
// RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
// CONSENT OF CODEJOCK SOFTWARE.
//
// THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
// IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
// YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
// SINGLE COMPUTER.
//
// CONTACT INFORMATION:
// support@codejock.com
// http://www.codejock.com
//
/////////////////////////////////////////////////////////////////////////////
#include "StdAfx.h"
#include "Resource.h"
#include "TestMarkupDlg.h"
#ifdef _DEBUG
# define new DEBUG_NEW
# undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CTestMarkupDlg dialog
CTestMarkupDlg::CTestMarkupDlg(CWnd* pParent)
: CDialog(CTestMarkupDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CTestMarkupDlg)
//}}AFX_DATA_INIT
}
void CTestMarkupDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CTestMarkupDlg)
DDX_Control(pDX, IDC_GRID, m_wndGrid);
DDX_Control(pDX, IDC_HITTEST, m_wndHitTest);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CTestMarkupDlg, CDialog)
//{{AFX_MSG_MAP(CTestMarkupDlg)
ON_WM_MOUSEMOVE()
ON_BN_CLICKED(IDC_SET_SCROLL_POSITION, OnSetScrollPosition)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CTestMarkupDlg message handlers
BOOL CTestMarkupDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Set the default font for all dialog controls.
SendMessageToDescendants(WM_SETFONT, (WPARAM)(HFONT)XTPFontManager()->GetFont());
enum Constants
{
ColumnCount = 5,
RecordCount = 3
};
// Initialize list control first
m_wndHitTest.InsertColumn(0, _T("Event"), LVCFMT_LEFT, 200);
m_wndGrid.EnableMarkup(TRUE);
#if defined(_XTP_INCLUDE_MARKUP)
m_wndGrid.GetMarkupContext()->AddHandler(
CXTPMarkupHyperlink::m_pClickEvent,
CreateMarkupClassDelegate(this, &CTestMarkupDlg::OnHyperlinkClick));
m_wndGrid.GetMarkupContext()->AddHandler(
CXTPMarkupButton::m_pClickEvent,
CreateMarkupClassDelegate(this, &CTestMarkupDlg::OnButtonClick));
m_wndGrid.GetMarkupContext()->SetDpiAware();
#endif
// Add columns
m_wndGrid.AddColumn(new CXTPGridColumn(0, _T("Hyperlink"), 100));
m_wndGrid.AddColumn(new CXTPGridColumn(1, _T("Button"), 100));
CString sHyperlink = _T("Test link");
CString sButton = _T("");
CString sScrollViewer =
_T("")
_T("")
_T("Option1")
_T("Option2")
_T("Option3")
_T("Option4")
_T("")
_T("");
// Add sample records
for (int nRecord = 0; nRecord < RecordCount; nRecord++)
{
CXTPGridRecord* pRecord;
CXTPGridRecordItemText* pItem;
// Body records
pRecord = m_wndGrid.GetRecords()->Add(new CXTPGridRecord());
pItem = new CXTPGridRecordItemText();
pRecord->AddItem(pItem);
pItem->SetCaption(sHyperlink);
pItem = new CXTPGridRecordItemText();
pRecord->AddItem(pItem);
pItem->SetCaption(sButton);
}
{
CXTPGridRecord* pRecord;
CXTPGridRecordItemText* pItem;
// Body records
pRecord = m_wndGrid.GetRecords()->Add(new CXTPGridRecord());
pItem = new CXTPGridRecordItemText();
pRecord->AddItem(pItem);
pItem->SetCaption(_T("Scrollviewer"));
m_pItemScrollViewer = new CXTPGridRecordItemText();
pRecord->AddItem(m_pItemScrollViewer);
m_pItemScrollViewer->SetCaption(sScrollViewer);
}
m_wndGrid.GetPaintManager()->SetFixedRowHeight(FALSE);
m_wndGrid.GetGridHeader()->SetAutoColumnSizing(FALSE);
m_wndGrid.ShowGroupBy(FALSE);
m_wndGrid.ShowHeaderRows(TRUE);
m_wndGrid.ShowFooterRows(FALSE);
m_wndGrid.Populate();
return FALSE;
}
void CTestMarkupDlg::OnSetScrollPosition()
{
CXTPMarkupUIElement* pElement = m_pItemScrollViewer->GetMarkupUIElement();
#if defined(_XTP_INCLUDE_MARKUP)
if (NULL != pElement && pElement->IsKindOf(MARKUP_TYPE(CXTPMarkupScrollViewer)))
{
CXTPMarkupScrollViewer* pScrollViewer = MARKUP_DYNAMICCAST(CXTPMarkupScrollViewer,
pElement);
pScrollViewer->SetScrollPos(SB_VERT, 20);
}
#endif
}
void CTestMarkupDlg::OnOK()
{
CDialog::OnOK();
}
int CTestMarkupDlg::AddEvent(LPCTSTR pszEvent)
{
int nItem = m_wndHitTest.InsertItem(m_wndHitTest.GetItemCount(), pszEvent);
m_wndHitTest.EnsureVisible(nItem, FALSE);
return nItem;
}
#if defined(_XTP_INCLUDE_MARKUP)
void CTestMarkupDlg::OnHyperlinkClick(CXTPMarkupObject* pSender, CXTPMarkupRoutedEventArgs* pArgs)
{
if (pSender->IsKindOf(MARKUP_TYPE(CXTPMarkupHyperlink)))
{
AddEvent(_T("OnHyperlinkClick"));
pArgs->SetHandled();
}
}
void CTestMarkupDlg::OnButtonClick(CXTPMarkupObject* pSender, CXTPMarkupRoutedEventArgs* pArgs)
{
if (pSender->IsKindOf(MARKUP_TYPE(CXTPMarkupButton)))
{
AddEvent(_T("OnButtonClick"));
pArgs->SetHandled();
}
}
#endif