MainFrm.cpp
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:11k
- // 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 "CalendarDemo.h"
- #include "MainFrm.h"
- #include "CalendarDemoView.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()
- //}}AFX_MSG_MAP
- ON_COMMAND_EX(ID_VIEW_DATEPICKER, OnBarCheck)
- ON_UPDATE_COMMAND_UI(ID_VIEW_DATEPICKER, OnUpdateControlBarMenu)
- ON_COMMAND_EX(ID_VIEW_PROPERTIES, OnBarCheck)
- ON_UPDATE_COMMAND_UI(ID_VIEW_PROPERTIES, OnUpdateControlBarMenu)
- ON_XTP_CREATECONTROL()
- ON_XTP_EXECUTE(ID_VIEW_OFFICE_THEME, OnOfficeThemeChanged)
- 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()
- {
- m_nOfficeTheme = -1;
-
- }
- CMainFrame::~CMainFrame()
- {
- }
- int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
- {
- 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 barn");
- return -1; // fail to create
- }
- if (!InitCommandBars())
- return -1;
- CXTPPaintManager::SetTheme(xtpThemeOffice2003);
- CXTPCommandBars* pCommandBars = GetCommandBars();
- 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;
- }
- pCommandBars->GetImageManager()->SetIcons(IDR_MAINFRAME, IDR_TOOLBAR_ALPHA);
- pCommandBars->GetShortcutManager()->SetAccelerators(IDR_MAINFRAME);
- // Load the previous state for command bars.
- LoadCommandBars(_T("CommandBars"));
- EnableDocking(CBRS_ALIGN_ANY);
-
- SetOfficeTheme(xtpCalendarThemeOffice2007);
-
- // Initialize dialog bar
- if (!m_dlgDatePicker.Create(this, IDD_DATEPICKER,
- CBRS_LEFT|CBRS_TOOLTIPS|CBRS_FLYBY|CBRS_HIDE_INPLACE, ID_VIEW_DATEPICKER))
- return -1; // fail to create
- // Initialize dialog bar
- if (!m_dlgOptions.Create(this, IDD_CALENDAR_DEMO_VIEW,
- CBRS_ALIGN_TOP|CBRS_TOOLTIPS|CBRS_FLYBY|CBRS_HIDE_INPLACE, ID_VIEW_PROPERTIES))
- return -1; // fail to create
- //m_dlgOptions.EnableDocking(CBRS_ALIGN_ANY);
- m_dlgOptions.EnableDocking(0);
- m_dlgOptions.SetWindowText(_T("Options"));
-
- ShowControlBar(&m_dlgOptions, FALSE, FALSE);
-
- FloatControlBar(&m_dlgOptions, CPoint(100, 200));
- // docking for DatePicker
- m_dlgDatePicker.EnableDocking(CBRS_ALIGN_LEFT);
- m_dlgDatePicker.SetWindowText(_T("Date Picker"));
-
- ShowControlBar(&m_dlgDatePicker, TRUE, FALSE);
- //FloatControlBar(&m_dlgDatePicker, CPoint(100, GetSystemMetrics(SM_CYSCREEN) / 3));
- return 0;
- }
- 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));
- // TODO: Modify the Window class or styles here by modifying
- // the CREATESTRUCT cs
- cs.dwExStyle &= ~WS_EX_CLIENTEDGE|WS_EX_STATICEDGE;
- return TRUE;
- }
- int CMainFrame::OnCreateControl(LPCREATECONTROLSTRUCT lpCreateControl)
- {
- if (lpCreateControl->nID == ID_VIEW_OFFICE_THEME)
- {
- CXTPControlComboBox* pComboTheme = (CXTPControlComboBox*)CXTPControlComboBox::CreateObject();
- pComboTheme->SetCaption(_T("Theme:"));
- pComboTheme->AssignDocTemplate(IDR_MAINFRAME);
- pComboTheme->SetStyle(xtpComboLabel);
-
- pComboTheme->SetWidth(200);
- //pComboTheme->SetDropDownWidth(pComboTheme->GetWidth());
- pComboTheme->SetFlags(xtpFlagManualUpdate);
- int nIndex = pComboTheme->AddString(_T("Office 2000"));
- pComboTheme->SetItemData(nIndex, xtpCalendarThemeOffice2000);
-
- nIndex = pComboTheme->AddString(_T("Office XP"));
- pComboTheme->SetItemData(nIndex, xtpCalendarThemeOfficeXP);
-
- nIndex = pComboTheme->AddString(_T("Office 2003"));
- pComboTheme->SetItemData(nIndex, xtpCalendarThemeOffice2003);
-
- int nIndexBlue = pComboTheme->AddString(_T("Office 2007 (Blue)"));
- pComboTheme->SetItemData(nIndexBlue, xtpCalendarThemeOffice2007);
- // 0 - Blue, 1 - Silver, 2 - Black
- if (FILEEXISTS_S(_GetTheme2007Style_file(1)))
- {
- nIndex = pComboTheme->AddString(_T("Office 2007 (Silver)"));
- pComboTheme->SetItemData(nIndex, xtpCalendarThemeOffice2007 + 100 + 1);
- }
- if (FILEEXISTS_S(_GetTheme2007Style_file(2)))
- {
- nIndex = pComboTheme->AddString(_T("Office 2007 (Black)"));
- pComboTheme->SetItemData(nIndex, xtpCalendarThemeOffice2007 + 100 + 2);
- }
-
- lpCreateControl->pControl = pComboTheme;
- pComboTheme->SetCurSel(nIndexBlue);
- return TRUE;
- }
- return FALSE;
- }
- void CMainFrame::OnOfficeThemeChanged(NMHDR* pNMHDR, LRESULT* pResult)
- {
- NMXTPCONTROL* tagNMCONTROL = (NMXTPCONTROL*)pNMHDR;
- CXTPControlComboBox* pControl = (CXTPControlComboBox*)tagNMCONTROL->pControl;
- ASSERT(pControl->GetType() == xtpControlComboBox);
- if (pControl->GetType() != xtpControlComboBox)
- {
- ASSERT(FALSE);
- return;
- }
- int nCurSel = pControl->GetCurSel();
- if (nCurSel < 0 || nCurSel >= pControl->GetCount())
- {
- ASSERT(FALSE);
- return;
- }
- int nTheme = (int)pControl->GetItemData(nCurSel);
- #ifdef _DEBUG
- if ((GetKeyState(VK_SHIFT) & 0x8000) && (GetKeyState(VK_CONTROL) & 0x8000))
- {
- if (FILEEXISTS_S(_GetTheme2007Style_file(3)))
- {
- int nIndex = pControl->AddString(_T("Office 2007 (Aqua)"));
- pControl->SetItemData(nIndex, xtpCalendarThemeOffice2007 + 100 + 3);
- pControl->SetCurSel(nIndex);
- nTheme = xtpCalendarThemeOffice2007 + 100 + 3;
- }
- }
- #endif
- SetOfficeTheme(nTheme);
- *pResult = 1;
- }
- void CMainFrame::SetOfficeTheme(int nCalendarTheme)
- {
- // xtpThemeOffice2000, // Office 2000 theme.
- // xtpThemeOfficeXP, // Office XP theme.
- // xtpThemeOffice2003, // Office 2003 theme.
- // xtpThemeNativeWinXP, // Windows XP themes support.
- // xtpThemeWhidbey, // Visual Studio 2005 theme.
- // xtpThemeOffice2007, // Office 2007 theme.
- // xtpThemeRibbon, // Office 2007 style ribbon theme
- // xtpThemeVisualStudio2008, // Visual Studio 2008 theme
- // xtpThemeCustom // Custom theme.
- static int sarThemesMap[xtpCalendarThemeOffice2007+1] = {0};
- if (sarThemesMap[xtpCalendarThemeOffice2000] == 0)
- {
- sarThemesMap[xtpCalendarThemeOffice2000] = xtpThemeOffice2000;
- sarThemesMap[xtpCalendarThemeOfficeXP] = xtpThemeOfficeXP;
- sarThemesMap[xtpCalendarThemeOffice2003] = xtpThemeOffice2003;
- sarThemesMap[xtpCalendarThemeOffice2007] = xtpThemeRibbon;
- }
- // 0 - Blue, 1 - Silver, 2 - Black
- int nTheme2007Style = 0;
- if (nCalendarTheme > xtpCalendarThemeOffice2007)
- {
- nTheme2007Style = nCalendarTheme - xtpCalendarThemeOffice2007 - 100;
- nCalendarTheme = xtpCalendarThemeOffice2007;
- }
- XTPPaintTheme nTheme2 = (XTPPaintTheme)sarThemesMap[nCalendarTheme];
- //------------------------------------
- CString strFilePath = _GetTheme2007Style_file(nTheme2007Style);
- XTPOffice2007Images()->SetHandle(strFilePath);
- //===============================================================
-
- #ifdef _XTP_INCLUDE_RIBBON
- CXTPPaintManager::SetTheme(nTheme2);
- if (nTheme2 == xtpThemeRibbon)
- EnableOffice2007Frame(GetCommandBars());
- else
- EnableOffice2007Frame(0);
- #else
- CXTPPaintManager::SetTheme((XTPPaintTheme)min(nTheme2, xtpThemeOffice2003));
- #endif // _XTP_INCLUDE_RIBBON
-
- XTPColorManager()->SetLunaTheme((nTheme2 == xtpThemeOffice2000) ? xtpSystemThemeUnknown : xtpSystemThemeAuto);
-
- RecalcLayout(FALSE);
- GetCommandBars()->RedrawCommandBars();
- RedrawWindow();
- m_nOfficeTheme = nCalendarTheme;
- CCalendarDemoView *pView = DYNAMIC_DOWNCAST(CCalendarDemoView, GetActiveView());
- if (pView)
- pView->OnOfficeThemeChanged(nCalendarTheme);
- }
- // nTheme2007Style: 0 - Blue, 1 - Silver, 2 - Black
- CString CMainFrame::_GetTheme2007Style_file(int nTheme2007Style)
- {
- CString strFilePath;
- if (nTheme2007Style == 0)
- return strFilePath; // use derfault(Blue)
- //------------------------------------
- TCHAR zsFileName[_MAX_PATH];
- DWORD dwRes = ::GetModuleFileName(AfxGetInstanceHandle(), zsFileName, _MAX_PATH);
- ASSERT(dwRes);
- if (dwRes)
- {
- strFilePath = zsFileName;
- int nFLs = strFilePath.ReverseFind(_T('\'));
- if (nFLs > 0)
- strFilePath.ReleaseBuffer(nFLs + 1);
- //------------------------------------
-
- if (nTheme2007Style == 1)
- {
- strFilePath += _T("Styles\Office2007Silver.dll");
- }
- else if (nTheme2007Style == 2)
- {
- strFilePath += _T("Styles\Office2007Black.dll");
- }
- else if (nTheme2007Style == 3)
- {
- strFilePath += _T("Styles\Office2007Aqua.dll");
- }
- else
- {
- strFilePath = _T(""); // use derfault(Blue)
- }
- }
- return strFilePath;
- }
- /////////////////////////////////////////////////////////////////////////////
- // CMainFrame diagnostics
- #ifdef _DEBUG
- void CMainFrame::AssertValid() const
- {
- CFrameWnd::AssertValid();
- }
- void CMainFrame::Dump(CDumpContext& dc) const
- {
- CFrameWnd::Dump(dc);
- }
- #endif //_DEBUG
- /////////////////////////////////////////////////////////////////////////////
- CDatePickerDialogBar::CDatePickerDialogBar()
- {
- }
- BEGIN_MESSAGE_MAP(CDatePickerDialogBar, CDialogBar)
- ON_WM_SIZE()
- ON_MESSAGE_VOID(WM_INITDIALOG, OnInitDialog)
- END_MESSAGE_MAP()
- void CDatePickerDialogBar::OnInitDialog()
- {
- Default();
- VERIFY(m_wndDatePicker.SubclassDlgItem(IDC_DATEPICKER, this));
-
- m_wndDatePicker.SetBorderStyle(xtpDatePickerBorderStatic);
- m_wndDatePicker.SetShowWeekNumbers(TRUE);
- }
- void CDatePickerDialogBar::OnSize(UINT nType, int cx, int cy)
- {
- CDialogBar::OnSize(nType, cx, cy);
- if (!m_wndDatePicker.m_hWnd)
- return;
-
- CXTPClientRect rcClient(this);
- CXTPWindowRect rcDatePicker(&m_wndDatePicker);
- ScreenToClient(&rcDatePicker);
- rcDatePicker.top = rcClient.top;
- rcDatePicker.bottom = rcClient.bottom;
-
- m_wndDatePicker.MoveWindow(&rcDatePicker);
- }