// 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(); }