// MarkupSampleDlg.cpp : implementation file
//
#include "stdafx.h"
#include "MarkupSample.h"
#include "MarkupSampleDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMarkupSampleDlg dialog
CMarkupSampleDlg::CMarkupSampleDlg(CWnd* pParent /*=NULL*/)
: CXTResizeDialog(CMarkupSampleDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CMarkupSampleDlg)
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CMarkupSampleDlg::DoDataExchange(CDataExchange* pDX)
{
CXTResizeDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMarkupSampleDlg)
DDX_Control(pDX, IDC_TREE_MARKUP, m_wndTree);
DDX_Control(pDX, IDC_BUTTON_MORE, m_btnMore);
DDX_Control(pDX, IDC_CHECK_MARKUP, m_wndCheckBox);
DDX_Control(pDX, IDC_BUTTON_MARKUP, m_wndButton);
DDX_Control(pDX, IDC_RADIO_MARKUP, m_wndRadio);
DDX_Control(pDX, IDC_STATIC_MARKUP, m_wndStatic);
DDX_Control(pDX, IDC_LIST_MARKUP, m_wndList);
DDX_Control(pDX, IDC_TABCONTROL, m_wndTabControl);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CMarkupSampleDlg, CXTResizeDialog)
//{{AFX_MSG_MAP(CMarkupSampleDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_COMMAND(ID_MORE_POPUPCONTROL, OnMorePopupcontrol)
ON_COMMAND(ID_MORE_UNICODESUPPORT, OnMoreUnicodesupport)
ON_WM_ERASEBKGND()
ON_COMMAND(ID_MORE_TASKDIALOG, OnMoreTaskdialog)
//}}AFX_MSG_MAP
ON_CBN_DROPDOWN(IDC_BUTTON_MORE, OnMoreDropDown)
ON_NOTIFY(TCN_SELCHANGE, IDC_TABCONTROL, OnTabControlSelChanged)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMarkupSampleDlg message handlers
BOOL CMarkupSampleDlg::OnInitDialog()
{
CXTResizeDialog::OnInitDialog();
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
UINT nIDFavorite = 10;
XTPImageManager()->SetIcons(_T("FAVORITES.PNG"), &nIDFavorite, 1, 0);
UINT nIDHelp = 12;
XTPImageManager()->SetIcons(_T("HELP.BMP"), &nIDHelp, 1, 0);
m_wndStatic.SetMarkupText(
""
""
" Change Case"
" Change all the selected text to UPPERCASE, lowercase, or other common capitalizations."
" "
" "
" "
" Press F1 for more help."
" "
""
"");
m_wndStatic.AddHandler(CXTPMarkupHyperlink::m_pClickEvent, CreateMarkupClassDelegate(this, &CMarkupSampleDlg::OnHyperlinkClick));
UINT nIDLove = 13;
XTPImageManager()->SetIcons(_T("LOVE.PNG"), &nIDLove, 1, 0);
m_wndRadio.EnableMarkup();
m_wndCheckBox.EnableMarkup();
m_wndButton.EnableMarkup();
HTREEITEM hItemRoot = m_wndTree.AddItem(_T("Personal Folders"), -1, -1, TVI_ROOT);
m_wndTree.AddItem(_T("Deleted Items"), -1, -1, hItemRoot);
m_wndTree.AddItem(_T("Drafts"), -1, -1, hItemRoot);
m_wndTree.AddItem(_T("Inbox "), -1, -1, hItemRoot);
m_wndTree.AddItem(_T("Junk E-mail "), -1, -1, hItemRoot);
m_wndTree.AddItem(_T("Outbox"), -1, -1, hItemRoot);
m_wndTree.Expand(hItemRoot, TVE_EXPAND);
//m_wndTabControl.SetAppearance(xtpTabAppearanceStateButtons);
m_wndTabControl.SetAppearance(xtpTabAppearanceVisualStudio);
m_wndTabControl.GetPaintManager()->m_clientFrame = xtpTabFrameSingleLine;
m_wndTabControl.EnableMarkup();
m_wndTabControl.InsertItem(0, _T("ListBox (3 Items)"));
m_wndTabControl.InsertItem(1, _T("ListBox (9 Items)"));
m_btnMore.SetPushButtonStyle(xtpButtonDropDown);
SetResize(IDC_LIST_MARKUP, SZ_TOP_LEFT, SZ_BOTTOM_RIGHT);
SetResize(IDC_TABCONTROL, SZ_TOP_LEFT, SZ_TOP_RIGHT);
SetResize(IDC_LABEL_TREEVIEW, SZ_BOTTOM_LEFT, SZ_BOTTOM_LEFT);
SetResize(IDC_TREE_MARKUP, SZ_BOTTOM_LEFT, SZ_BOTTOM_CENTER);
SetResize(IDC_LABEL_STATIC, SZ_BOTTOM_CENTER, SZ_BOTTOM_RIGHT);
SetResize(IDC_STATIC_MARKUP, SZ_BOTTOM_CENTER, SZ_BOTTOM_RIGHT);
SetResize(IDC_LABEL_BUTTONS, SZ_BOTTOM_LEFT, SZ_BOTTOM_LEFT);
SetResize(IDC_RADIO_MARKUP, SZ_BOTTOM_LEFT, SZ_BOTTOM_LEFT);
SetResize(IDC_CHECK_MARKUP, SZ_BOTTOM_LEFT, SZ_BOTTOM_LEFT);
SetResize(IDC_BUTTON_MARKUP, SZ_BOTTOM_LEFT, SZ_BOTTOM_LEFT);
SetResize(IDC_BUTTON_MORE, SZ_BOTTOM_CENTER, SZ_BOTTOM_CENTER);
SetResize(IDOK, SZ_BOTTOM_CENTER, SZ_BOTTOM_CENTER);
return TRUE; // return TRUE unless you set the focus to a control
}
void CMarkupSampleDlg::AddListItem(LPCTSTR lpszMarkup)
{
MARKUP_LISTITEM* pItem = new MARKUP_LISTITEM(&m_wndList);
pItem->Resolve(lpszMarkup);
m_wndList.AddString((LPCTSTR)pItem);
}
void CMarkupSampleDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CXTResizeDialog::OnSysCommand(nID, lParam);
}
}
// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.
void CMarkupSampleDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CXTResizeDialog::OnPaint();
}
}
// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CMarkupSampleDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
void CMarkupSampleDlg::OnHyperlinkClick(CXTPMarkupObject* pSender, CXTPMarkupRoutedEventArgs* pArgs)
{
if (pSender->IsKindOf(MARKUP_TYPE(CXTPMarkupHyperlink)))
{
AfxMessageBox(_T("Hyperlink Clicked"));
CXTPMarkupString* pTag = MARKUP_DYNAMICCAST(CXTPMarkupString, ((CXTPMarkupHyperlink*)pSender)->GetTag());
if (pTag)
{
TRACE(_T("Tag = %ls"), (LPCWSTR)*pTag);
}
pArgs->SetHandled();
}
}
void CMarkupSampleDlg::OnMoreDropDown()
{
CMenu menu;
VERIFY(menu.LoadMenu(IDR_MENU_MORE));
CXTPWindowRect rc(GetDlgItem(IDC_BUTTON_MORE));
TrackPopupMenu(menu.GetSubMenu(0)->GetSafeHmenu(), 0, rc.left, rc.bottom, 0, m_hWnd, 0);
}
void CMarkupSampleDlg::OnMorePopupcontrol()
{
CXTPPopupControl* pPopup = new CXTPPopupControl();
pPopup->SetTransparency(200);
pPopup->SetTheme(xtpPopupThemeOffice2003);
pPopup->AllowMove(TRUE);
pPopup->SetAnimateDelay(500);
pPopup->SetPopupAnimation();
pPopup->SetShowDelay(5000);
pPopup->SetAutoDelete(TRUE);
CXTPPopupItem* pItemText = (CXTPPopupItem*)pPopup->AddItem(new CXTPPopupItem(CRect(8, 12, 500, 130)));
LPCTSTR lpszMarkup =
_T("")
_T(" ")
_T(" ")
_T(" ")
_T(" ")
_T(" ")
_T(" ")
_T(" ")
_T(" ")
_T(" ")
_T(" ")
_T(" ")
_T(" ")
_T(" ")
_T(" ")
_T(" FTSE 100")
_T(" FTSE TechMark")
_T(" Dow Jones")
_T(" S&P 500")
_T(" Dollar")
_T(" Euro")
_T(" 5,990.12")
_T(" 804.10")
_T(" 8,322.12")
_T(" 860")
_T(" 1.56")
_T(" 1.59")
_T(" +50.1")
_T(" -0.4")
_T(" +78")
_T(" +15.43")
_T(" +0.06")
_T(" -0.11")
_T("");
pItemText->SetMarkupText(lpszMarkup);
pItemText->FitToContent();
CSize sz(pItemText->GetRect().Size());
// close icon.
CXTPPopupItem* pItemIcon = (CXTPPopupItem*)pPopup->AddItem(
new CXTPPopupItem(CRect(sz.cx + 10, 10, sz.cx + 10 + 16, 10 + 16)));
pPopup->GetImageManager()->SetIcon(IDI_POPUP_CLOSE, IDI_POPUP_CLOSE);
pItemIcon->SetIconIndex(IDI_POPUP_CLOSE);
pItemIcon->SetButton(TRUE);
pItemIcon->SetID(XTP_ID_POPUP_CLOSE);
pPopup->SetPopupSize(CSize(sz.cx + 30, sz.cy + 20));
pPopup->Show(this);
}
void CMarkupSampleDlg::OnMoreUnicodesupport()
{
m_wndStatic.SetMarkupText(
""
""
""
""
"Markup supports Unicode text in ANSI applications.Use UTF-8 encode to enter it:"
"Languages: العربية (ar) • Azərbaycan (az) • Български (bg) • Català (ca) • Česky (cs) • Deutsch (de) • Ελληνικά (el) • English (en) • Esperanto (eo) • Español (es) • فارسی (fa) • Suomi (fi) • Français (fr) • 日本語 (ja) • 한국어 (ko) • Lietuvių (lt) • മലയാളം (ml) • Македонски (mk) • नेपाल भाषा (new) • ਪੰਜਾਬੀ (pa) • Polski (pl) • Português (pt) • Română (ro) • Русский (ru) • Svenska (sv) • தமிழ் (ta) • ไทย (th) • Türkçe (tr) • Українська (uk) • Tiếng Việt (vi) • 中文 (zh)"
""
""
"");
}
void CMarkupSampleDlg::OnTabControlSelChanged(NMHDR* pHeader, LRESULT* pResult)
{
m_wndList.ResetContent();
if (m_wndTabControl.GetCurSel() == 0)
{
AddListItem(_T("")
_T("")
_T("")
_T("")
_T("")
_T("")
_T("")
_T("")
_T(""));
AddListItem(_T("")
_T("")
_T("")
_T("")
_T("")
_T("")
_T("")
_T("")
_T(""));
AddListItem(_T("")
_T("")
_T("")
_T("")
_T("")
_T("")
_T("")
_T("")
_T(""));
}
if (m_wndTabControl.GetCurSel() == 1)
{
AddListItem(_T("Inbox"));
AddListItem(_T("Unread Mail (4730)"));
AddListItem(_T("For Follow Up [21]"));
AddListItem(_T("Sent Items"));
AddListItem(_T("We have been using the Xtreme Toolkit for a very short while in our company and already now the investment has paid for itself in terms of productivity gain. We have been down the road of using various non-commercial packages but time is quickly wasted on patching up these 'semi-products' for stability...Thank you for a great product!"));
AddListItem(_T("Centered Text"));
AddListItem(_T("Some Text Some another text"));
AddListItem(_T("Stack Panel"));
AddListItem(_T("Grid Text Column 1, Row 1")
_T("Grid Text Column 1, Row 2Grid Text Column 2, Row 1Grid Text Column 2, Row 2"));
}
};
BOOL CMarkupSampleDlg::OnEraseBkgnd(CDC* pDC)
{
BOOL bResult = CXTResizeDialog::OnEraseBkgnd(pDC);
#if 0
CXTPMarkupContext* pContext = XTPMarkupCreateContext();
CXTPMarkupUIElement* pElement = XTPMarkupParseText(pContext, _T("CodejockSoftware"));
XTPMarkupRenderElement(pElement, pDC->GetSafeHdc(), CXTPClientRect(this));
XTPMarkupReleaseElement(pElement);
XTPMarkupReleaseContext(pContext);
#endif
return bResult;
}
void CMarkupSampleDlg::OnMoreTaskdialog()
{
CXTPTaskDialog td;
td.SetMainInstruction(_T("Main Instruction"));
td.SetContent(_T("Content Contet Content Link"));
td.EnableMarkup();
td.DoModal();
}