home *** CD-ROM | disk | FTP | other *** search
Wrap
/*---------------------------------------------------------------------------*\ | MainFrm.cpp - CtlHTML(tm) Control Library Test Program | | Windmill Point Software, Alburg, VT 05440 | | Copyright (c) 1999, Windmill Point Software | | All Rights Reserved. | \*---------------------------------------------------------------------------*/ #include "stdafx.h" #include "CtlHTML Demo.h" #include "DevUI.h" #include "MainFrm.h" #include "..\CtlHtml.h" #include "Options.h" #include "Controls.h" #include "MessageBox.h" #include "Modeless.h" #include "resource.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif static UINT indicators[] = { ID_SEPARATOR, // status line indicator // ID_INDICATOR_CAPS, // ID_INDICATOR_NUM, // ID_INDICATOR_SCRL, }; // globals BOOL DisableControls = TRUE; // helper function void ReloadComboList (CComboBox *pCombo, CMcMRUList *pComboMru, LPCTSTR editText) { POSITION pos; CString text; ASSERT_VALID(pCombo); ASSERT_VALID(pComboMru); // empty list to prevent duplicates while (pCombo->DeleteString(0) >= 0) ; // load list for (pos = pComboMru->GetHeadPosition(); pos != 0; pComboMru->GetNext(pos)) { text = pComboMru->GetAt(pos); pCombo->AddString(text); } // set the edit box text pCombo->SetWindowText(editText); } ///////////////////////////////////////////////////////////////////////////// // CMainFrame IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd) BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) //{{AFX_MSG_MAP(CMainFrame) ON_WM_CREATE() ON_WM_CLOSE() ON_COMMAND(ID_CUSTOMMESSAGEBOXES, OnMessageBox) ON_COMMAND(ID_OPTIONS, OnOptions) ON_WM_ACTIVATE() ON_COMMAND(ID_CONTROLS, OnControls) ON_COMMAND(ID_MODELESS_EXAMPLE, OnModelessExample) //}}AFX_MSG_MAP ON_WM_SYSCOLORCHANGE() ON_WM_FONTCHANGE() END_MESSAGE_MAP() CMainFrame::CMainFrame() { } CMainFrame::~CMainFrame() { } BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { if (!CFrameWnd::PreCreateWindow(cs) ) return FALSE; cs.style &= ~FWS_ADDTOTITLE; // Added to remove "Untitled" from title return TRUE; } int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { CWinApp *pApp; // handle window placement CMcWindowPlacement wp; wp.RestoreWindowPlacement(_T("MainFrame"), _T("WindowPlacement"), this, TRUE); if (CFrameWnd::OnCreate(lpCreateStruct) == -1) return -1; if (!m_wndStatusBar.Create(this) || !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT))) { TRACE0("Failed to create status bar\n"); return -1; // fail to create } if ((pApp = AfxGetApp()) == 0) { ASSERT(FALSE); return 0; } TEXTMETRIC tm; CClientDC dc(0); int cxChar, cyChar, oldCxChar, oldCyChar; // get the text metrics for the default font dc.GetTextMetrics(&tm); cxChar = tm.tmAveCharWidth; cyChar = tm.tmHeight; // get the previous text metrics, if any oldCxChar = pApp->GetProfileInt(_T("Settings"), _T("CxChar"), -1); oldCyChar = pApp->GetProfileInt(_T("Settings"), _T("CyChar"), -1); // check if changed - small is 7 x 16, large is 9 x 20 if (cxChar != oldCxChar || cyChar != oldCyChar) { // If changed, reset all window placements since the window sizes are wrong. // Note that we could keep the MainFrame placement, since it is a sizable window. // All the dialog box placements are wrong and will make the dialog boxes too // large or too small. pApp->WriteProfileBinary(_T("MainFrame"), _T("WindowPlacement"), 0, 0); pApp->WriteProfileBinary(_T("Options"), _T("WindowPlacement"), 0, 0); pApp->WriteProfileBinary(_T("Controls"), _T("WindowPlacement"), 0, 0); pApp->WriteProfileBinary(_T("Message Boxes"), _T("WindowPlacement"), 0, 0); pApp->WriteProfileBinary(_T("Modeless"), _T("WindowPlacement"), 0, 0); // save the current text metrics pApp->WriteProfileInt(_T("Settings"), _T("CxChar"), cxChar); pApp->WriteProfileInt(_T("Settings"), _T("CyChar"), cyChar); } // load saved settings // message box options m_MessageTitleMRU. GetProfile(_T("Message Boxes"), _T("MessageTitle")); m_MessageMessageMRU.GetProfile(_T("Message Boxes"), _T("MessageMessage")); m_MessageFutureMRU. GetProfile(_T("Message Boxes"), _T("MessageFuture")); m_MessageTitleMRU. m_MaxSize = 10; m_MessageMessageMRU.m_MaxSize = 10; m_MessageFutureMRU. m_MaxSize = 10; m_MessageTitleText = pApp->GetProfileString(_T("Message Boxes"), _T("MessageTitleText"), _T("An HTMLMessageBox")); m_MessageMessageText = pApp->GetProfileString(_T("Message Boxes"), _T("MessageMessageText"), _T("<HTML>This is an example<BR>message using <B>HTML</B>.</HTML>")); m_MessageFuture = pApp->GetProfileString(_T("Message Boxes"), _T("MessageFutureText")); m_MessageStandardButtons = pApp->GetProfileInt(_T("Message Boxes"), _T("MessageStandardButtons"), 4); m_MessageDefaultButton = pApp->GetProfileInt(_T("Message Boxes"), _T("MessageDefaultButton"), 0); m_MessageResourceIcon = pApp->GetProfileInt(_T("Message Boxes"), _T("MessageResourceIcon"), 0); m_MessageStandardIcon = pApp->GetProfileInt(_T("Message Boxes"), _T("MessageStandardIcon"), 0); m_MessageTimeout = pApp->GetProfileInt(_T("Message Boxes"), _T("MessageTimeout"), 0); m_MessageHelpID = pApp->GetProfileInt(_T("Message Boxes"), _T("MessageHelpID"), 0); m_DetailsTitleMRU. GetProfile(_T("Message Boxes"), _T("DetailsTitle")); m_DetailsMessageMRU.GetProfile(_T("Message Boxes"), _T("DetailsMessage")); m_DetailsDetailsMRU.GetProfile(_T("Message Boxes"), _T("DetailsDetails")); m_DetailsFutureMRU. GetProfile(_T("Message Boxes"), _T("DetailsFuture")); m_DetailsTitleMRU. m_MaxSize = 10; m_DetailsMessageMRU.m_MaxSize = 10; m_DetailsDetailsMRU.m_MaxSize = 10; m_DetailsFutureMRU. m_MaxSize = 10; m_DetailsTitleText = pApp->GetProfileString(_T("Message Boxes"), _T("DetailsTitleText"), _T("An HTMLDetailsBox")); m_DetailsMessageText = pApp->GetProfileString(_T("Message Boxes"), _T("DetailsMessageText"), _T("<HTML>This is an example<BR>message using <B>HTML</B>.</HTML>")); m_DetailsDetailText = pApp->GetProfileString(_T("Message Boxes"), _T("DetailsDetailsText"), _T("<HTML>This is an example of details text.<BR>Note that details text can use <B>HTML</B> text as well as <I>regular</I> text.<BR>For line breaks in regular text, the details text needs both a carriage return and a line feed.</HTML>")); m_DetailsFuture = pApp->GetProfileString(_T("Message Boxes"), _T("DetailsFutureText")); m_DetailsStandardButtons = pApp->GetProfileInt(_T("Message Boxes"), _T("DetailsStandardButtons"), 3); m_DetailsDefaultButton = pApp->GetProfileInt(_T("Message Boxes"), _T("DetailsDefaultButton"), 0); m_DetailsResourceIcon = pApp->GetProfileInt(_T("Message Boxes"), _T("DetailsResourceIcon"), 0); m_DetailsStandardIcon = pApp->GetProfileInt(_T("Message Boxes"), _T("DetailsStandardIcon"), 0); m_DetailsTimeout = pApp->GetProfileInt(_T("Message Boxes"), _T("DetailsTimeout"), 0); m_DetailsHelpID = pApp->GetProfileInt(_T("Message Boxes"), _T("DetailsHelpID"), 0); m_FlashTitleMRU. GetProfile(_T("Message Boxes"), _T("FlashTitle")); m_FlashMessageMRU.GetProfile(_T("Message Boxes"), _T("FlashMessage")); m_FlashFutureMRU. GetProfile(_T("Message Boxes"), _T("FlashFuture")); m_FlashTitleMRU. m_MaxSize = 10; m_FlashMessageMRU.m_MaxSize = 10; m_FlashFutureMRU. m_MaxSize = 10; m_FlashTitleText = pApp->GetProfileString(_T("Message Boxes"), _T("FlashTitleText"), _T("An HTMLFlashBox")); m_FlashMessageText = pApp->GetProfileString(_T("Message Boxes"), _T("FlashMessageText"), _T("<HTML>This is an example<BR>message using <B>HTML</B>.</HTML>")); m_FlashFuture = pApp->GetProfileString(_T("Message Boxes"), _T("FlashFutureText")); m_FlashResourceIcon = pApp->GetProfileInt(_T("Message Boxes"), _T("FlashResourceIcon"), 0); m_FlashStandardIcon = pApp->GetProfileInt(_T("Message Boxes"), _T("FlashStandardIcon"), 0); m_FlashTimeout = pApp->GetProfileInt(_T("Message Boxes"), _T("FlashTimeout"), 3); m_FlashHelpID = pApp->GetProfileInt(_T("Message Boxes"), _T("FlashHelpID"), 0); // general options m_Typeface = pApp->GetProfileString(_T("Options"), _T("Typeface"), _T("MS Sans Serif")); m_FontSize = pApp->GetProfileInt (_T("Options"), _T("FontSize"), 8); m_CenterButtons = pApp->GetProfileInt (_T("Options"), _T("CenterButtons"), TRUE); m_DitherGraphics = pApp->GetProfileInt (_T("Options"), _T("DitherGraphics"), TRUE); m_UseDisabled3D = pApp->GetProfileInt (_T("Options"), _T("UseDisabled3D"), FALSE); m_HelpPath = pApp->GetProfileString(_T("Options"), _T("HelpPath"), _T("")); DisableControls = pApp->GetProfileInt (_T("Options"), _T("DisableControls"), TRUE); // set CtlHTML Control Library values HTMLSetFont(m_Typeface, m_FontSize); HTMLSetCenterButtons(m_CenterButtons); HTMLSetHelp(m_HelpPath); CtlHTMLOptions(m_UseDisabled3D, m_DitherGraphics); return 0; } void CMainFrame::OnClose() { CWinApp *pApp; if ((pApp = AfxGetApp()) != 0) { // save settings // message box options m_MessageTitleMRU. SetProfile(_T("Message Boxes"), _T("MessageTitle")); m_MessageMessageMRU.SetProfile(_T("Message Boxes"), _T("MessageMessage")); m_MessageFutureMRU. SetProfile(_T("Message Boxes"), _T("MessageFuture")); pApp->WriteProfileString(_T("Message Boxes"), _T("MessageTitleText"), m_MessageTitleText); pApp->WriteProfileString(_T("Message Boxes"), _T("MessageMessageText"), m_MessageMessageText); pApp->WriteProfileString(_T("Message Boxes"), _T("MessageFutureText"), m_MessageFuture); pApp->WriteProfileInt(_T("Message Boxes"), _T("MessageStandardButtons"), m_MessageStandardButtons); pApp->WriteProfileInt(_T("Message Boxes"), _T("MessageDefaultButton"), m_MessageDefaultButton); pApp->WriteProfileInt(_T("Message Boxes"), _T("MessageResourceIcon"), m_MessageResourceIcon); pApp->WriteProfileInt(_T("Message Boxes"), _T("MessageStandardIcon"), m_MessageStandardIcon); pApp->WriteProfileInt(_T("Message Boxes"), _T("MessageTimeout"), m_MessageTimeout); pApp->WriteProfileInt(_T("Message Boxes"), _T("MessageHelpID"), m_MessageHelpID); m_DetailsTitleMRU. SetProfile(_T("Message Boxes"), _T("DetailsTitle")); m_DetailsMessageMRU.SetProfile(_T("Message Boxes"), _T("DetailsMessage")); m_DetailsDetailsMRU.SetProfile(_T("Message Boxes"), _T("DetailsDetails")); m_DetailsFutureMRU. SetProfile(_T("Message Boxes"), _T("DetailsFuture")); pApp->WriteProfileString(_T("Message Boxes"), _T("DetailsTitleText"), m_DetailsTitleText); pApp->WriteProfileString(_T("Message Boxes"), _T("DetailsMessageText"), m_DetailsMessageText); pApp->WriteProfileString(_T("Message Boxes"), _T("DetailsDetailsText"), m_DetailsDetailText); pApp->WriteProfileString(_T("Message Boxes"), _T("DetailsFutureText"), m_DetailsFuture); pApp->WriteProfileInt(_T("Message Boxes"), _T("DetailsStandardButtons"), m_DetailsStandardButtons); pApp->WriteProfileInt(_T("Message Boxes"), _T("DetailsDefaultButton"), m_DetailsDefaultButton); pApp->WriteProfileInt(_T("Message Boxes"), _T("DetailsResourceIcon"), m_DetailsResourceIcon); pApp->WriteProfileInt(_T("Message Boxes"), _T("DetailsStandardIcon"), m_DetailsStandardIcon); pApp->WriteProfileInt(_T("Message Boxes"), _T("DetailsTimeout"), m_DetailsTimeout); pApp->WriteProfileInt(_T("Message Boxes"), _T("DetailsHelpID"), m_DetailsHelpID); m_FlashTitleMRU. SetProfile(_T("Message Boxes"), _T("FlashTitle")); m_FlashMessageMRU.SetProfile(_T("Message Boxes"), _T("FlashMessage")); m_FlashFutureMRU. SetProfile(_T("Message Boxes"), _T("FlashFuture")); pApp->WriteProfileString(_T("Message Boxes"), _T("FlashTitleText"), m_FlashTitleText); pApp->WriteProfileString(_T("Message Boxes"), _T("FlashMessageText"), m_FlashMessageText); pApp->WriteProfileString(_T("Message Boxes"), _T("FlashFutureText"), m_FlashFuture); pApp->WriteProfileInt(_T("Message Boxes"), _T("FlashResourceIcon"), m_FlashResourceIcon); pApp->WriteProfileInt(_T("Message Boxes"), _T("FlashStandardIcon"), m_FlashStandardIcon); pApp->WriteProfileInt(_T("Message Boxes"), _T("FlashTimeout"), m_FlashTimeout); pApp->WriteProfileInt(_T("Message Boxes"), _T("FlashHelpID"), m_FlashHelpID); // general options pApp->WriteProfileString(_T("Options"), _T("Typeface"), m_Typeface); pApp->WriteProfileInt (_T("Options"), _T("FontSize"), m_FontSize); pApp->WriteProfileInt (_T("Options"), _T("CenterButtons"), m_CenterButtons); pApp->WriteProfileInt (_T("Options"), _T("DitherGraphics"), m_DitherGraphics); pApp->WriteProfileInt (_T("Options"), _T("UseDisabled3D"), m_UseDisabled3D); pApp->WriteProfileString(_T("Options"), _T("HelpPath"), m_HelpPath); pApp->WriteProfileInt (_T("Options"), _T("DisableControls"), DisableControls); } else ASSERT(FALSE); // handle window placement CMcWindowPlacement wp; wp.SaveWindowPlacement(_T("MainFrame"), _T("WindowPlacement"), this); CFrameWnd::OnClose(); } void CMainFrame::OnActivate (UINT nState, CWnd* pWndOther, BOOL bMinimized) { CView *pView; CFrameWnd::OnActivate(nState, pWndOther, bMinimized); if (DisableControls && (pView = GetActiveView()) != 0) CtlHTMLDialogEnable(pView->m_hWnd, nState != WA_INACTIVE); // call to enable/disable the CFormView controls } void CMainFrame::OnSysColorChange () { CFrameWnd::OnSysColorChange (); CtlHTMLSetColors(); // call to change the color of the CtlHTML Control Library graphics } void CMainFrame::OnFontChange () { CFrameWnd::OnFontChange (); HTMLResetFonts(); // call to reset the CtlHTML Control Library fonts } void CMainFrame::OnOptions() { CString oldTypeface = m_Typeface; UINT oldFontSize = m_FontSize; COptions dialog(_T("Options"), this); dialog.m_General.m_FontSize = m_FontSize; dialog.m_General.m_Typeface = m_Typeface; dialog.m_General.m_RightJustify = !m_CenterButtons; dialog.m_General.m_DisableControls = DisableControls; dialog.m_General.m_DitherGraphics = m_DitherGraphics; dialog.m_General.m_HelpPath = m_HelpPath; dialog.m_General.m_UseDisabled3D = m_UseDisabled3D; if (dialog.DoModal() == IDOK) { m_FontSize = dialog.m_General.m_FontSize; m_Typeface = dialog.m_General.m_Typeface; m_CenterButtons = !dialog.m_General.m_RightJustify; DisableControls = dialog.m_General.m_DisableControls; m_DitherGraphics = dialog.m_General.m_DitherGraphics; m_HelpPath = dialog.m_General.m_HelpPath; m_UseDisabled3D = dialog.m_General.m_UseDisabled3D; // set CtlHTML Control Library values HTMLSetFont(m_Typeface, m_FontSize); HTMLSetCenterButtons(m_CenterButtons); HTMLSetHelp(m_HelpPath); CtlHTMLOptions(m_UseDisabled3D, m_DitherGraphics); // invalidate if font has changed if (m_Typeface != oldTypeface || m_FontSize != oldFontSize) Invalidate(); } } void CMainFrame::OnControls() { CControls dialog(_T("Control Examples"), this); dialog.DoModal(); } void CMainFrame::OnMessageBox() { CMessageOptions dialog(_T("Message Boxes (Pro Version Only)"), this); dialog.m_MessageBoxOptions.m_pTitleMRU = &m_MessageTitleMRU; dialog.m_MessageBoxOptions.m_pMessageMRU = &m_MessageMessageMRU; dialog.m_MessageBoxOptions.m_pFutureMRU = &m_MessageFutureMRU; dialog.m_MessageBoxOptions.m_TitleText = m_MessageTitleText; dialog.m_MessageBoxOptions.m_MessageText = m_MessageMessageText; dialog.m_MessageBoxOptions.m_DisplayInFutureText = m_MessageFuture; dialog.m_MessageBoxOptions.m_StandardButtons = m_MessageStandardButtons; dialog.m_MessageBoxOptions.m_DefaultButton = m_MessageDefaultButton; dialog.m_MessageBoxOptions.m_ResourceIcon = m_MessageResourceIcon; dialog.m_MessageBoxOptions.m_StandardIcon = m_MessageStandardIcon; dialog.m_MessageBoxOptions.m_Timeout = m_MessageTimeout; dialog.m_MessageBoxOptions.m_HelpID = m_MessageHelpID; dialog.m_DetailsBoxOptions.m_pTitleMRU = &m_DetailsTitleMRU; dialog.m_DetailsBoxOptions.m_pMessageMRU = &m_DetailsMessageMRU; dialog.m_DetailsBoxOptions.m_pDetailsMRU = &m_DetailsDetailsMRU; dialog.m_DetailsBoxOptions.m_pFutureMRU = &m_DetailsFutureMRU; dialog.m_DetailsBoxOptions.m_TitleText = m_DetailsTitleText; dialog.m_DetailsBoxOptions.m_MessageText = m_DetailsMessageText; dialog.m_DetailsBoxOptions.m_DetailsText = m_DetailsDetailText; dialog.m_DetailsBoxOptions.m_DisplayInFutureText = m_DetailsFuture; dialog.m_DetailsBoxOptions.m_StandardButtons = m_DetailsStandardButtons; dialog.m_DetailsBoxOptions.m_DefaultButton = m_DetailsDefaultButton; dialog.m_DetailsBoxOptions.m_ResourceIcon = m_DetailsResourceIcon; dialog.m_DetailsBoxOptions.m_StandardIcon = m_DetailsStandardIcon; dialog.m_DetailsBoxOptions.m_Timeout = m_DetailsTimeout; dialog.m_DetailsBoxOptions.m_HelpID = m_DetailsHelpID; dialog.m_FlashBoxOptions.m_pTitleMRU = &m_FlashTitleMRU; dialog.m_FlashBoxOptions.m_pMessageMRU = &m_FlashMessageMRU; dialog.m_FlashBoxOptions.m_pFutureMRU = &m_FlashFutureMRU; dialog.m_FlashBoxOptions.m_TitleText = m_FlashTitleText; dialog.m_FlashBoxOptions.m_MessageText = m_FlashMessageText; dialog.m_FlashBoxOptions.m_DisplayInFutureText = m_FlashFuture; dialog.m_FlashBoxOptions.m_ResourceIcon = m_FlashResourceIcon; dialog.m_FlashBoxOptions.m_StandardIcon = m_FlashStandardIcon; dialog.m_FlashBoxOptions.m_Timeout = m_FlashTimeout; if (dialog.DoModal() == IDOK) { m_MessageTitleText = dialog.m_MessageBoxOptions.m_TitleText; m_MessageMessageText = dialog.m_MessageBoxOptions.m_MessageText; m_MessageFuture = dialog.m_MessageBoxOptions.m_DisplayInFutureText; m_MessageStandardButtons = dialog.m_MessageBoxOptions.m_StandardButtons; m_MessageDefaultButton = dialog.m_MessageBoxOptions.m_DefaultButton; m_MessageResourceIcon = dialog.m_MessageBoxOptions.m_ResourceIcon; m_MessageStandardIcon = dialog.m_MessageBoxOptions.m_StandardIcon; m_MessageTimeout = dialog.m_MessageBoxOptions.m_Timeout; m_MessageHelpID = dialog.m_MessageBoxOptions.m_HelpID; m_DetailsTitleText = dialog.m_DetailsBoxOptions.m_TitleText; m_DetailsMessageText = dialog.m_DetailsBoxOptions.m_MessageText; m_DetailsDetailText = dialog.m_DetailsBoxOptions.m_DetailsText; m_DetailsFuture = dialog.m_DetailsBoxOptions.m_DisplayInFutureText; m_DetailsStandardButtons = dialog.m_DetailsBoxOptions.m_StandardButtons; m_DetailsDefaultButton = dialog.m_DetailsBoxOptions.m_DefaultButton; m_DetailsResourceIcon = dialog.m_DetailsBoxOptions.m_ResourceIcon; m_DetailsStandardIcon = dialog.m_DetailsBoxOptions.m_StandardIcon; m_DetailsTimeout = dialog.m_DetailsBoxOptions.m_Timeout; m_DetailsHelpID = dialog.m_DetailsBoxOptions.m_HelpID; m_FlashTitleText = dialog.m_FlashBoxOptions.m_TitleText; m_FlashMessageText = dialog.m_FlashBoxOptions.m_MessageText; m_FlashFuture = dialog.m_FlashBoxOptions.m_DisplayInFutureText; m_FlashResourceIcon = dialog.m_FlashBoxOptions.m_ResourceIcon; m_FlashStandardIcon = dialog.m_FlashBoxOptions.m_StandardIcon; m_FlashTimeout = dialog.m_FlashBoxOptions.m_Timeout; } } void CMainFrame::OnModelessExample() { CModeless dialog(this); dialog.DoModal(); } #ifdef _DEBUG void CMainFrame::AssertValid() const { CFrameWnd::AssertValid(); } void CMainFrame::Dump(CDumpContext& dc) const { CFrameWnd::Dump(dc); } #endif //_DEBUG