MainFrm.cpp
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:13k
- // 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 "OutlookBar.h"
- #include "MainFrm.h"
- #include "LeftView.h"
- #include "OutlookBarView.h"
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
- /////////////////////////////////////////////////////////////////////////////
- // CMainFrame
- IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
- BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
- //{{AFX_MSG_MAP(CMainFrame)
- ON_WM_CREATE()
- ON_COMMAND(ID_VIEW_THEME_DEFAULT, OnViewThemeDefault)
- ON_UPDATE_COMMAND_UI(ID_VIEW_THEME_DEFAULT, OnUpdateViewThemeDefault)
- ON_COMMAND(ID_VIEW_THEME_OFFICEXP, OnViewThemeOfficeXP)
- ON_UPDATE_COMMAND_UI(ID_VIEW_THEME_OFFICEXP, OnUpdateViewThemeOfficeXP)
- ON_COMMAND(ID_VIEW_THEME_OFFICE2003, OnViewThemeOffice2003)
- ON_UPDATE_COMMAND_UI(ID_VIEW_THEME_OFFICE2003, OnUpdateViewThemeOffice2003)
- //}}AFX_MSG_MAP
- ON_WM_CLOSE()
- ON_COMMAND(XTP_ID_CUSTOMIZE, OnCustomize)
- ON_MESSAGE(XTWM_OUTBAR_NOTIFY, OnOutbarNotify)
- 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()
- {
- // initialize themes.
- m_iTheme = m_regMgr.GetProfileInt(
- _T("Settings"), _T("Theme"), xtThemeOfficeXP);
- }
- CMainFrame::~CMainFrame()
- {
- m_regMgr.WriteProfileInt(
- _T("Settings"), _T("Theme"), m_iTheme);
- }
- int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
- {
- if (CMainFrameBase::OnCreate(lpCreateStruct) == -1)
- return -1;
- if (!m_wndStatusBar.Create(this) ||
- !m_wndStatusBar.SetIndicators(indicators,
- sizeof(indicators)/sizeof(UINT)))
- {
- TRACE0("Failed to create status barn");
- return -1; // fail to create
- }
- if (!InitCommandBars())
- return -1;
- XTPPaintManager()->SetTheme((XTPPaintTheme)m_iTheme);
- CXTPCommandBars* pCommandBars = GetCommandBars();
- if(pCommandBars == NULL)
- {
- TRACE0("Failed to create command bars object.n");
- return -1; // fail to create
- }
- pCommandBars->SetMenu(_T("Menu Bar"), IDR_MAINFRAME);
- CXTPToolBar* pCommandBar = (CXTPToolBar*)pCommandBars->Add(_T("Standard"), xtpBarTop);
- if (!pCommandBar ||
- !pCommandBar->LoadToolBar(IDR_MAINFRAME))
- {
- TRACE0("Failed to create toolbarn");
- return -1;
- }
- // Load the previous state for command bars.
- LoadCommandBars(_T("CommandBars"));
- SetTheme(m_iTheme);
- return 0;
- }
- BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/,
- CCreateContext* pContext)
- {
- // create splitter window
- if (!m_wndSplitter.CreateStatic(this, 1, 2))
- return FALSE;
- // Here we create the outbar control using the splitter as its parent
- // and setting its id to the first pane.
- if (!m_wndOutlookBar.Create(WS_CHILD|WS_VISIBLE|WS_CLIPCHILDREN, CRect(0,0,0,0),
- &m_wndSplitter, m_wndSplitter.IdFromRowCol(0, 0), OBS_XT_DEFAULT|OBS_XT_ANIMATION/*|OBS_XT_SELHIGHLIGHT*/))
- {
- TRACE0("Failed to create outlook bar.");
- return FALSE;
- }
- // create the tree control.
- if (!m_wndTreeCtrl.Create(WS_BORDER|WS_CHILD|TVS_HASLINES|TVS_LINESATROOT|TVS_HASBUTTONS|TVS_SHOWSELALWAYS,
- CRect(0,0,0,0), &m_wndOutlookBar, IDC_TREE_CTRL))
- {
- TRACE0( "Unable to create tree control.n" );
- return FALSE;
- }
- // create the tree control.
- // create the image lists used by the caption and tree controls.
- if (!InitializeImageLists())
- return FALSE;
- // fill the tree control.
- if (!InitilalizeTreeControl())
- return FALSE;
- m_wndTreeCtrl.SetOwner(this);
- if (!m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(COutlookBarView),
- CSize(100, 100), pContext))
- {
- m_wndSplitter.DestroyWindow();
- return FALSE;
- }
- // Set the background and text color of the outlook bar.
- // m_wndOutlookBar.SetBackColor(RGB(0x3a,0x6e,0xa5));
- // m_wndOutlookBar.SetTextColor(RGB(0xff,0xff,0xff));
- // Set the default sizes for the splitter panes.
- CRect r;
- GetClientRect(&r);
- m_wndSplitter.SetColumnInfo( 0, r.Width()/4, 0 );
- m_wndSplitter.RecalcLayout();
- // Add items to the outlook bar.
- InitializeOutlookBar();
- return TRUE;
- }
- static UINT nIcons[] =
- {
- IDI_ICON1, IDI_ICON3, IDI_ICON4, IDI_ICON7,
- IDI_ICON8, IDI_ICON2, IDI_ICON11, IDI_ICON6,
- IDI_ICON9, IDI_ICON10, IDI_ICON5
- };
- BOOL CMainFrame::InitilalizeTreeControl()
- {
- // Set the tree controls image list.
- m_wndTreeCtrl.SetImageList (&m_ilTreeIcons, TVSIL_NORMAL);
- // TODO: Add items to the tree control.
- HTREEITEM hItem = m_wndTreeCtrl.InsertItem( _T("Outlook Today"), 0, 0);
- m_wndTreeCtrl.InsertItem (_T("Calendar"), 1, 1, hItem);
- m_wndTreeCtrl.InsertItem (_T("Contacts"), 2, 2, hItem);
- m_wndTreeCtrl.InsertItem (_T("Deleted Items"), 3, 3, hItem);
- m_wndTreeCtrl.InsertItem (_T("Drafts"), 4, 4, hItem);
- m_wndTreeCtrl.InsertItem (_T("Inbox"), 5, 5, hItem);
- m_wndTreeCtrl.InsertItem (_T("Journal"), 6, 6, hItem);
- m_wndTreeCtrl.InsertItem (_T("Notes"), 7, 7, hItem);
- m_wndTreeCtrl.InsertItem (_T("Outbox"), 8, 8, hItem);
- m_wndTreeCtrl.InsertItem (_T("Sent Items"), 9, 9, hItem);
- m_wndTreeCtrl.InsertItem (_T("Tasks"), 10, 10, hItem);
- m_wndTreeCtrl.SetItemBold (hItem, TRUE);
- m_wndTreeCtrl.Expand (hItem, TVE_EXPAND);
- m_wndTreeCtrl.SelectItem(hItem);
- return TRUE;
- }
- BOOL CMainFrame::InitializeImageLists()
- {
- // Create the image list used by the caption button.
- if (!m_ilCaption.Create(XT_IDB_BTN_OUT, 16, 1, RGB(255,0,255)))
- return FALSE;
- // Create the image list used by the tree control.
- if (!m_ilTreeIcons.Create (16, 16, TRUE, 2, 1))
- return FALSE;
- // TODO: Load your icons that you want displayed in the tree
- // control here, then add them to the image list.
- int i;
- for (i = 0; i < _countof(nIcons); ++i)
- {
- HICON hIcon = AfxGetApp()->LoadIcon(nIcons[i]);
- ASSERT(hIcon);
- m_ilTreeIcons.Add(hIcon);
- }
- return TRUE;
- }
- BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
- {
- if( !CFrameWnd::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
- {
- CFrameWnd::AssertValid();
- }
- void CMainFrame::Dump(CDumpContext& dc) const
- {
- CFrameWnd::Dump(dc);
- }
- #endif //_DEBUG
- /////////////////////////////////////////////////////////////////////////////
- // CMainFrame message handlers
- void CMainFrame::InitializeOutlookBar()
- {
- // Create the image lists used by the outlook bar.
- m_ImageSmall.Create (16, 16, ILC_COLOR16|ILC_MASK, 2, 1);
- m_ImageLarge.Create (32, 32, ILC_COLOR16|ILC_MASK, 2, 1);
- // initiailize the image lists.
- int i;
- for (i = 0; i < _countof(nIcons); ++i)
- {
- HICON hIcon = AfxGetApp()->LoadIcon(nIcons[i]);
- ASSERT(hIcon);
- m_ImageSmall.Add(hIcon);
- m_ImageLarge.Add(hIcon);
- }
- int iFolder; // index of the added folder
- // set the image lists for the outlook bar.
- m_wndOutlookBar.SetImageList(&m_ImageLarge, OBS_XT_LARGEICON);
- m_wndOutlookBar.SetImageList(&m_ImageSmall, OBS_XT_SMALLICON);
- // Add the first folder to the outlook bar.
- iFolder = m_wndOutlookBar.AddFolder(_T("Shortcuts 1"), 0);
- // Add items to the folder, syntax is folder, index, text, image, and item data.
- m_wndOutlookBar.InsertItem(iFolder, 1, _T("Item 1"), 0, NULL);
- m_wndOutlookBar.InsertItem(iFolder, 2, _T("Disabled Item 2"), 1, NULL);
- m_wndOutlookBar.InsertItem(iFolder, 3, _T("Disabled Item 3"), 2, NULL);
- m_wndOutlookBar.InsertItem(iFolder, 4, _T("Item 4"), 3, NULL);
- m_wndOutlookBar.InsertItem(iFolder, 5, _T("Item 5"), 4, NULL);
- m_wndOutlookBar.InsertItem(iFolder, 6, _T("Item 6"), 5, NULL);
- // Add the second folder to the outlook bar.
- iFolder = m_wndOutlookBar.AddFolder(_T("Shortcuts 2"), 1);
- // Add items to the folder, syntax is folder, index, text, image, and item data.
- m_wndOutlookBar.InsertItem(iFolder, 1, _T("Item 1"), 0, NULL);
- m_wndOutlookBar.InsertItem(iFolder, 2, _T("Item 2"), 1, NULL);
- // Add the tree control to the outlook bar.
- iFolder = m_wndOutlookBar.AddFolderBar(_T("Tree Control"), &m_wndTreeCtrl );
- // Set the default font used by the outlook bar.
- m_wndOutlookBar.SetFontX(&XTAuxData().font);
- // We want to receive notification messages.
- m_wndOutlookBar.SetOwner(this);
- // Select the first folder in the bar.
- m_wndOutlookBar.SetSelFolder(0);
- // Disable item 2 and 3
- m_wndOutlookBar.EnableItem( 0, 1, false );
- m_wndOutlookBar.EnableItem( 0, 2, false );
- }
- LRESULT CMainFrame::OnOutbarNotify(WPARAM wParam, LPARAM lParam)
- {
- int nBarAction = (int)wParam;
- // Cast the lParam to a XT_OUTBAR_INFO* struct pointer.
- XT_OUTBAR_INFO* pOBInfo = (XT_OUTBAR_INFO*)lParam;
- ASSERT(pOBInfo);
- switch (nBarAction)
- {
- case OBN_XT_ITEMCLICK:
- {
- CString strMessage;
- strMessage.Format( _T("Item selected: %d, Name: %s.n"), pOBInfo->nIndex, pOBInfo->lpszText);
- AfxMessageBox(strMessage);
- break;
- }
- case OBN_XT_FOLDERCHANGE:
- TRACE2( "Folder selected: %d, Name: %s.n", pOBInfo->nIndex, pOBInfo->lpszText);
- break;
- case OBN_XT_ONLABELENDEDIT:
- TRACE2( "Item edited: %d, New name: %s.n", pOBInfo->nIndex, pOBInfo->lpszText);
- break;
- case OBN_XT_ONGROUPENDEDIT:
- TRACE2( "Folder edited: %d, New name: %s.n", pOBInfo->nIndex, pOBInfo->lpszText);
- break;
- case OBN_XT_DRAGITEM:
- TRACE3( "Dragging From: %d, To: %d, Name: %s.n", pOBInfo->nDragFrom, pOBInfo->nDragTo, pOBInfo->lpszText);
- break;
- case OBN_XT_ITEMHOVER:
- TRACE2( "Hovering Item: %d, Name: %s.n", pOBInfo->nIndex, pOBInfo->lpszText);
- break;
- case OBN_XT_DELETEITEM:
- if (m_wndOutlookBar.IsWindowVisible() && AfxMessageBox(_T("Are you sure you want to remove this folder shortcut?"),
- MB_ICONWARNING|MB_YESNO) == IDNO)
- {
- // The user selected No, return FALSE to abort the action.
- return FALSE;
- }
- TRACE2( "Item deleted: %d, Name: %s.n", pOBInfo->nIndex, pOBInfo->lpszText);
- break;
- case OBN_XT_DELETEFOLDER:
- if (m_wndOutlookBar.IsWindowVisible() && AfxMessageBox(_T("Are you sure you want to remove the specified folder?"),
- MB_ICONWARNING|MB_YESNO) == IDNO)
- {
- // The user selected No, return FALSE to abort the action.
- return FALSE;
- }
- TRACE2( "Folder deleted: %d, Name: %s.n", pOBInfo->nIndex, pOBInfo->lpszText);
- break;
- }
- return TRUE;
- }
- BOOL CMainFrame::LoadFrame(UINT nIDResource, DWORD dwDefaultStyle, CWnd* pParentWnd, CCreateContext* pContext)
- {
- if ( !CFrameWnd::LoadFrame(nIDResource, dwDefaultStyle, pParentWnd, pContext) )
- {
- return FALSE;
- }
- return TRUE;
- }
- void CMainFrame::OnClose()
- {
- // Save the current state for command bars.
- SaveCommandBars(_T("CommandBars"));
- CMainFrameBase::OnClose();
- }
- void CMainFrame::OnCustomize()
- {
- // get a pointer to the command bars object.
- CXTPCommandBars* pCommandBars = GetCommandBars();
- if (pCommandBars == NULL)
- return;
- // instanciate the customize dialog
- CXTPCustomizeSheet dlg(pCommandBars);
- // add the options page to the customize dialog.
- CXTPCustomizeOptionsPage pageOptions(&dlg);
- dlg.AddPage(&pageOptions);
- // add the commands page to the customize dialog.
- CXTPCustomizeCommandsPage* pPageCommands = dlg.GetCommandsPage();
- pPageCommands->AddCategories(IDR_MAINFRAME);
- // initialize the commands page page.
- pPageCommands->InsertAllCommandsCategory();
- pPageCommands->InsertBuiltInMenus(IDR_MAINFRAME);
- pPageCommands->InsertNewMenuCategory();
- // display the customize dialog.
- dlg.DoModal();
- }
- void CMainFrame::SetTheme(int iTheme)
- {
- m_iTheme = iTheme;
- XTThemeManager()->SetTheme((XTThemeStyle)m_iTheme);
- XTPPaintManager()->SetTheme((XTPPaintTheme)m_iTheme);
- RedrawWindow( NULL, NULL,
- RDW_INVALIDATE | RDW_UPDATENOW | RDW_ERASE | RDW_ALLCHILDREN );
- RecalcLayout();
- }
- void CMainFrame::OnViewThemeDefault()
- {
- SetTheme(xtThemeDefault);
- }
- void CMainFrame::OnUpdateViewThemeDefault(CCmdUI* pCmdUI)
- {
- pCmdUI->SetCheck(m_iTheme == xtThemeDefault);
- }
- void CMainFrame::OnViewThemeOfficeXP()
- {
- SetTheme(xtThemeOfficeXP);
- }
- void CMainFrame::OnUpdateViewThemeOfficeXP(CCmdUI* pCmdUI)
- {
- pCmdUI->SetCheck(m_iTheme == xtThemeOfficeXP);
- }
- void CMainFrame::OnViewThemeOffice2003()
- {
- SetTheme(xtThemeOffice2003);
- }
- void CMainFrame::OnUpdateViewThemeOffice2003(CCmdUI* pCmdUI)
- {
- pCmdUI->SetCheck(m_iTheme == xtThemeOffice2003);
- }