// MainFrm.cpp : implementation of the CMainFrame class // // This file is a part of the XTREME TOOLKIT PRO MFC class library. // (c)1998-2008 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 "GUI_OneNote.h" #include "MainFrm.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif #define IDC_BUTTON_AUTORUN 300 ///////////////////////////////////////////////////////////////////////////// // CMainFrame IMPLEMENT_DYNAMIC(CMainFrame, CMDIFrameWnd) BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd) //{{AFX_MSG_MAP(CMainFrame) ON_WM_CREATE() ON_WM_DESTROY() ON_WM_CLOSE() ON_COMMAND(ID_VIEW_TASKPANE, OnViewTaskPane) //}}AFX_MSG_MAP ON_XTP_CREATECONTROL() ON_XTP_CREATECOMMANDBAR() ON_COMMAND(XTP_ID_CUSTOMIZE, OnCustomize) ON_MESSAGE(XTPWM_DOCKINGPANE_NOTIFY, OnDockingPaneNotify) ON_MESSAGE(WM_XTP_PRETRANSLATEMOUSEMSG, OnTabbarMouseMsg) END_MESSAGE_MAP() static UINT indicators[] = { ID_SEPARATOR, // status line indicator ID_INDICATOR_CAPS, ID_INDICATOR_NUM, ID_INDICATOR_SCRL, }; ///////////////////////////////////////////////////////////////////////////// // CMainFrame construction/destruction CMainFrame::CMainFrame() { } CMainFrame::~CMainFrame() { } int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CMDIFrameWnd::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 (!InitCommandBars()) return -1; CXTPPaintManager::SetTheme(xtpThemeOffice2003); CXTPCommandBars* pCommandBars = GetCommandBars(); CXTPCommandBar* pMenuBar = pCommandBars->SetMenu(_T("Menu Bar"), IDR_MAINFRAME); pMenuBar->SetFlags(xtpFlagIgnoreSetMenuMessage|xtpFlagHideMDIButtons); XTPImageManager()->SetMaskColor(RGB(128, 0, 128)); CXTPToolBar* pCommandBar = (CXTPToolBar*)pCommandBars->Add(_T("Standard"), xtpBarTop); if (!pCommandBar || !pCommandBar->LoadToolBar(IDR_MAINFRAME)) { TRACE0("Failed to create toolbar\n"); return -1; } CXTPToolBar* pFormatBar = (CXTPToolBar*)pCommandBars->Add(_T("Formatting"), xtpBarTop); if (!pFormatBar || !pFormatBar->LoadToolBar(IDR_FORMATBAR)) { TRACE0("Failed to create toolbar\n"); return -1; } if (XTPImageManager()->IsAlphaIconsSupported()) { XTPImageManager()->SetIcons(IDR_MAINFRAME, IDR_MAINFRAME_ALPHA, xtpImageNormal); XTPImageManager()->SetIcons(IDR_EXTENDED, IDR_EXTENDED_ALPHA, xtpImageNormal); XTPImageManager()->SetIcons(IDR_FORMATBAR, IDR_FORMATBAR_ALPHA, xtpImageNormal); XTPPaintManager()->GetIconsInfo()->bUseDisabledIcons = TRUE; } else { CXTPOffice2003Theme::LoadModernToolbarIcons(IDR_MAINFRAME); CXTPOffice2003Theme::LoadModernToolbarIcons(IDR_EXTENDED); CXTPOffice2003Theme::LoadModernToolbarIcons(IDR_FORMATBAR); } XTPImageManager()->SetIcons(IDR_COMMONBAR); XTPImageManager()->SetIcons(IDR_COLORS); m_paneManager.InstallDockingPanes(this); m_paneManager.SetTheme(xtpPaneThemeOffice2003); // Create docking panes. m_paneManager.CreatePane( IDR_PANE_NEW, CRect(0, 0,200, 120), xtpPaneDockRight); CXTPDockingPane* pPaneSearch = m_paneManager.CreatePane( IDR_PANE_SEARCH, CRect(0, 0,200, 120), xtpPaneDockLeft); pPaneSearch->Hide(); CXTPImageManagerIcon* pIcon = XTPImageManager()->GetImage(ID_FILE_NEW); ASSERT(pIcon); m_paneManager.SetIcon(IDR_PANE_NEW, pIcon->GetIcon()); pIcon = XTPImageManager()->GetImage(ID_EDIT_FIND); ASSERT(pIcon); m_paneManager.SetIcon(IDR_PANE_SEARCH, pIcon->GetIcon()); CXTPDockingPaneLayout layoutNormal(&m_paneManager); if (layoutNormal.Load(_T("NormalLayout"))) { m_paneManager.SetLayout(&layoutNormal); } VERIFY(m_MTIClientWnd.Attach(this)); m_MTIClientWnd.EnableToolTips(); CXTPTabPaintManager* pTabPaintManager = new CXTPTabPaintManager(); pTabPaintManager->SetAppearance(xtpTabAppearancePropertyPage2003); pTabPaintManager->m_bOneNoteColors = TRUE; pTabPaintManager->m_bHotTracking = TRUE; pTabPaintManager->m_bShowIcons = FALSE; pTabPaintManager->m_bBoldSelected = TRUE; pTabPaintManager->GetAppearanceSet()->m_rcHeaderMargin.SetRect(2, 6, 2, 0); pTabPaintManager->m_rcClientMargin.SetRect(2, 2, 2, 2); pTabPaintManager->m_rcButtonMargin.SetRect(4, 1, 4, 1); m_MTIClientWnd.SetPaintManager(pTabPaintManager); // Load the previous state for toolbars and menus. LoadCommandBars(_T("CommandBars")); return 0; } BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { if( !CMDIFrameWnd::PreCreateWindow(cs) ) return FALSE; cs.lpszClass = _T("XTPMainFrame"); CXTPDrawHelpers::RegisterWndClass(AfxGetInstanceHandle(), cs.lpszClass, CS_DBLCLKS, AfxGetApp()->LoadIcon(IDR_MAINFRAME)); return TRUE; } ///////////////////////////////////////////////////////////////////////////// // CMainFrame diagnostics #ifdef _DEBUG void CMainFrame::AssertValid() const { CMDIFrameWnd::AssertValid(); } void CMainFrame::Dump(CDumpContext& dc) const { CMDIFrameWnd::Dump(dc); } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CMainFrame message handlers void CMainFrame::OnViewTaskPane() { m_paneManager.ShowPane(IDR_PANE_NEW); } int CMainFrame::OnCreateCommandBar(LPCREATEBARSTRUCT lpCreatePopup) { if (lpCreatePopup->nID == ID_FORMAT_NOTEFLAGS_TODO || (lpCreatePopup->bPopup && _tcscmp(lpCreatePopup->lpcstrCaption, _T("Note Flags")) == 0)) { CXTPPopupBar* pPopupBar = CXTPPopupBar::CreatePopupBar(GetCommandBars()); pPopupBar->SetTearOffPopup(_T("Note Flags"), 1000); lpCreatePopup->pCommandBar = pPopupBar; return TRUE; } return FALSE; } int CMainFrame::OnCreateControl(LPCREATECONTROLSTRUCT lpCreateControl) { CXTPToolBar* pToolBar = DYNAMIC_DOWNCAST(CXTPToolBar, lpCreateControl->pCommandBar); if (!pToolBar) return FALSE; if (lpCreateControl->nID == ID_HELP_QUESTION) { CXTPControlComboBox* pComboQuestion = new CXTPControlComboBox(); pComboQuestion->SetDropDownListStyle(); pComboQuestion->SetFlags(xtpFlagManualUpdate | xtpFlagRightAlign); pComboQuestion->SetWidth(150); pComboQuestion->SetID(ID_HELP_QUESTION); pComboQuestion->SetEditHint(pComboQuestion->GetCaption()); lpCreateControl->pControl = pComboQuestion; return TRUE; } if (lpCreateControl->nID == ID_EDIT_FONT && pToolBar->GetBarID() == IDR_FORMATBAR) { CXTPControlComboBox* pComboFont = new CXTPControlFontComboBox(); pComboFont->SetDropDownListStyle(); lpCreateControl->pControl = pComboFont; return TRUE; } if (lpCreateControl->nID == ID_EDIT_SIZE && pToolBar->GetBarID() == IDR_FORMATBAR) { CXTPControlComboBox* pComboSize = new CXTPControlSizeComboBox(); pComboSize->SetDropDownListStyle(); lpCreateControl->pControl = pComboSize; return TRUE; } if (lpCreateControl->nID == ID_FORMAT_NOTEFLAGS_TODO && pToolBar->GetBarID() == IDR_MAINFRAME) { lpCreateControl->controlType = xtpControlSplitButtonPopup; return TRUE; } if (lpCreateControl->nID == ID_FORMAT_FONTCOLOR && pToolBar->GetBarID() == IDR_FORMATBAR) { CXTPControlPopupColor* pPopupColor = new CXTPControlPopupColor(); CXTPPopupBar* pColorBar = (CXTPPopupBar*)CXTPPopupToolBar::CreateObject(); pColorBar->GetControls()->Add(new CXTPControlButtonColor(), XTP_IDS_AUTOMATIC); pColorBar->GetControls()->Add(new CXTPControlColorSelector(), ID_FORMAT_FONTCOLOR_SELECTOR); pPopupColor->SetCommandBar(pColorBar); pColorBar->EnableCustomization(FALSE); pColorBar->InternalRelease(); lpCreateControl->pControl = pPopupColor; return TRUE; } if (lpCreateControl->nID == ID_FORMAT_HIGHLIGHT && pToolBar->GetBarID() == IDR_FORMATBAR) { CXTPControlPopupColor* pPopupColor = new CXTPControlPopupColor(); CXTPPopupBar* pColorBar = (CXTPPopupBar*)CXTPPopupToolBar::CreateObject(); pColorBar->GetControls()->Add(new CXTPControlButtonColor(), ID_FORMAT_HIGHLIGHT_NONE); pColorBar->GetControls()->Add(new CXTPControlColorSelector(), ID_FORMAT_HIGHLIGHT_SELECTOR); pPopupColor->SetCommandBar(pColorBar); pColorBar->EnableCustomization(FALSE); pColorBar->InternalRelease(); lpCreateControl->pControl = pPopupColor; return TRUE; } return FALSE; } void CMainFrame::OnCustomize() { CXTPCustomizeSheet cs(GetCommandBars()); CXTPCustomizeOptionsPage pageOptions(&cs); cs.AddPage(&pageOptions); CXTPCustomizeCommandsPage* pCommands = cs.GetCommandsPage(); pCommands->AddCategories(IDR_MAINFRAME); pCommands->GetControls(_T("File"))->Add(xtpControlButton, ID_FILE_OPEN, _T(""), 1); pCommands->InsertAllCommandsCategory(); pCommands->InsertBuiltInMenus(IDR_MAINFRAME); pCommands->InsertNewMenuCategory(); cs.DoModal(); } void CMainFrame::CreateTaskPanel() { VERIFY(m_wndTaskPanel.Create(WS_CHILD|WS_CLIPSIBLINGS|WS_CLIPCHILDREN, CRect(0, 0, 0, 0), this, 0)); m_wndTaskPanel.SetOwner(this); m_wndTaskPanel.SetTheme(xtpTaskPanelThemeOffice2003Plain); m_wndTaskPanel.SetExpandable(FALSE); m_wndTaskPanel.SetAnimation(xtpTaskPanelAnimationNo); CXTPTaskPanelGroupItem* pTextItem; CXTPTaskPanelGroup* pGroupNew = m_wndTaskPanel.AddGroup(ID_TASKGROUP_NEW); pGroupNew->GetInnerMargins().SetRect(0, 5, 0, 0); pGroupNew->AddLinkItem(ID_TASKITEM_BLANK, 0); pTextItem = pGroupNew->AddTextItem(_T("Add a new page to the current notebook. A new page is represented by a new tab at the end of the vertical series of tabs.")); pTextItem->GetMargins().SetRect(20, 0, 0, 5); pGroupNew->AddLinkItem(ID_TASKITEM_SUBPAGE, 1); pTextItem = pGroupNew->AddTextItem(_T("Add a new page immediately following the current page and that shares the same title as the current page. A subpage is represented by a small tab to indicate that it is grouped with another page.")); pTextItem->GetMargins().SetRect(20, 0, 0, 5); pGroupNew->AddLinkItem(ID_TASKITEM_SECTION, 2); pTextItem = pGroupNew->AddTextItem(_T("Create a section file in the current folder on your computer. Sections are represented by tabs across the top of the pages.")); pTextItem->GetMargins().SetRect(20, 0, 0, 5); pGroupNew->AddLinkItem(ID_TASKITEM_QUICK, 3); pTextItem = pGroupNew->AddTextItem(_T("Open a small OneNote window where you can make notes that are automatically saved in the Quick notes section.")); pTextItem->GetMargins().SetRect(20, 0, 0, 5); m_ilTaskIcons.Create(16, 16, ILC_COLOR24|ILC_MASK, 0, 1); CBitmap bmp; bmp.LoadBitmap(IDB_TASKPANEL_ICONS); m_ilTaskIcons.Add(&bmp, RGB(0, 0xFF, 0)); m_wndTaskPanel.SetImageList(&m_ilTaskIcons); m_wndButtonAutoRun.Create(_T("Show at Startup"), WS_CHILD|BS_AUTOCHECKBOX|BS_NOTIFY , CRect(0, 0, 300, 20), &m_wndTaskPanel, IDC_BUTTON_AUTORUN); m_wndButtonAutoRun.SetFont(XTPPaintManager()->GetRegularFont()); CXTPTaskPanelGroupItem* pItemButton = pGroupNew->AddControlItem(m_wndButtonAutoRun); pItemButton->SetSize(CSize(0, 20)); pItemButton->GetMargins().SetRect(0, 15, 0, 0); m_wndButtonAutoRun.SetItem(pItemButton); m_wndButtonAutoRun.SetCheck(1); } BEGIN_MESSAGE_MAP(CButtonEx, CButton) ON_WM_CTLCOLOR_REFLECT() ON_CONTROL_REFLECT(BN_CLICKED, OnAutoRun) END_MESSAGE_MAP() HBRUSH CButtonEx::CtlColor(CDC* pDC, UINT /*nCtlColor*/) { if (m_pItem) { XTP_TASKPANEL_GROUPCOLORS* pColors = m_pItem->GetPaintManager()->GetGroupColors(m_pItem->GetItemGroup()->IsSpecialGroup()); if (!m_brushBack.GetSafeHandle() || pColors->clrClient != m_clrBack) { m_brushBack.DeleteObject(); m_brushBack.CreateSolidBrush(pColors->clrClient); m_clrBack = pColors->clrClient; } pDC->SetBkMode(TRANSPARENT); return m_brushBack; } return 0; } void CButtonEx::OnAutoRun() { TRACE(_T("AutoRun clicked\n")); } LRESULT CMainFrame::OnDockingPaneNotify(WPARAM wParam, LPARAM lParam) { if (wParam == XTP_DPN_SHOWWINDOW) { CXTPDockingPane* pPane = (CXTPDockingPane*)lParam; if (!pPane->IsValid()) { switch(pPane->GetID()) { case IDR_PANE_NEW: if (!m_wndTaskPanel.m_hWnd) { CreateTaskPanel(); } pPane->Attach(&m_wndTaskPanel); break; case IDR_PANE_SEARCH: if (!m_paneSeaarch.m_hWnd) { m_paneSeaarch.Create(_T("STATIC"), NULL, WS_CHILD, CRect(0, 0, 0, 0), this, 0); } pPane->Attach(&m_paneSeaarch); break; default: ASSERT(FALSE); } } return TRUE; } return FALSE; } void CMainFrame::OnDestroy() { m_MTIClientWnd.Detach(); CMDIFrameWnd::OnDestroy(); } void CMainFrame::OnClose() { CXTPDockingPaneLayout layoutNormal(&m_paneManager); m_paneManager.GetLayout(&layoutNormal); layoutNormal.Save(_T("NormalLayout")); // Save the current state for toolbars and menus. SaveCommandBars(_T("CommandBars")); CMDIFrameWnd::OnClose(); } LRESULT CMainFrame::OnTabbarMouseMsg(WPARAM wParam,LPARAM lParam) { if (wParam != WM_RBUTTONDOWN) return FALSE; CPoint point = CPoint((DWORD)lParam); CXTPTabManagerItem* pItem = m_MTIClientWnd.HitTest(point); if (pItem) { CWnd* pFrame = CWnd::FromHandle(pItem->GetHandle()); MDIActivate(pFrame); m_MTIClientWnd.Refresh(); CMenu menu; VERIFY(menu.LoadMenu(IDR_POPUP_TABS)); CMenu* pPopup = menu.GetSubMenu(0); m_MTIClientWnd.WorkspaceToScreen(&point); CXTPCommandBars::TrackPopupMenu(pPopup, 0, point.x, point.y, this); m_MTIClientWnd.Refresh(); return TRUE; } return FALSE; } void CMainFrame::OnSetPreviewMode(BOOL bPreview, CPrintPreviewState* pState) { // Toggle CommandBars GetCommandBars()->OnSetPreviewMode(bPreview); // Toggle Docking Panes. m_paneManager.OnSetPreviewMode(bPreview); // Toggle Tab Client m_MTIClientWnd.ShowWorkspace(!bPreview); CMDIFrameWnd::OnSetPreviewMode(bPreview, pState); }