123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579 |
-
- // MainFrm.cpp: CMainFrame 类的实现
- //
- #include "pch.h"
- #include "framework.h"
- #include "CTSManager.h"
- #include "CFormViewBrand.h"
- #include "CFormViewQuater.h"
- #include "CFormViewQBrand.h"
- #include "MainFrm.h"
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #endif
- // CMainFrame
- IMPLEMENT_DYNAMIC(CMainFrame, CMDIFrameWndEx)
- const int iMaxUserToolbars = 10;
- const UINT uiFirstUserToolBarId = AFX_IDW_CONTROLBAR_FIRST + 40;
- const UINT uiLastUserToolBarId = uiFirstUserToolBarId + iMaxUserToolbars - 1;
- BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWndEx)
- ON_WM_CREATE()
- ON_COMMAND(ID_WINDOW_MANAGER, &CMainFrame::OnWindowManager)
- ON_COMMAND(ID_VIEW_CUSTOMIZE, &CMainFrame::OnViewCustomize)
- ON_REGISTERED_MESSAGE(AFX_WM_CREATETOOLBAR, &CMainFrame::OnToolbarCreateNew)
- ON_COMMAND_RANGE(ID_VIEW_APPLOOK_WIN_2000, ID_VIEW_APPLOOK_WINDOWS_7, &CMainFrame::OnApplicationLook)
- ON_UPDATE_COMMAND_UI_RANGE(ID_VIEW_APPLOOK_WIN_2000, ID_VIEW_APPLOOK_WINDOWS_7, &CMainFrame::OnUpdateApplicationLook)
- ON_WM_SETTINGCHANGE()
- END_MESSAGE_MAP()
- static UINT indicators[] =
- {
- ID_SEPARATOR, // 状态行指示器
- ID_INDICATOR_CAPS,
- ID_INDICATOR_NUM,
- ID_INDICATOR_SCRL,
- };
- static void DelAllMenu(HMENU hMenu)
- {
- // 首先删除多余的菜单项
- int Menucount = GetMenuItemCount(hMenu);
- for (int i = Menucount - 1;i > -1;i--)
- {
- ::DeleteMenu(hMenu, i, MF_BYPOSITION);
- }
- }
- // CMainFrame 构造/析构
- CMainFrame::CMainFrame() noexcept
- {
- // TODO: 在此添加成员初始化代码
- theApp.m_nAppLook = theApp.GetInt(_T("ApplicationLook"), ID_VIEW_APPLOOK_VS_2008);
- }
- CMainFrame::~CMainFrame()
- {
- }
- int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
- {
- if (CMDIFrameWndEx::OnCreate(lpCreateStruct) == -1)
- return -1;
- BOOL bNameValid;
- #if 0 // 禁用这块代码:不显示视图Tab标签(或者设置EnableMDITabbedGroups参数1FASE)
- CMDITabInfo mdiTabParams;
- mdiTabParams.m_style = CMFCTabCtrl::STYLE_3D_ONENOTE; // 其他可用样式...
- mdiTabParams.m_bActiveTabCloseButton = TRUE; // 设置为 FALSE 会将关闭按钮放置在选项卡区域的右侧
- mdiTabParams.m_bTabIcons = FALSE; // 设置为 TRUE 将在 MDI 选项卡上启用文档图标
- mdiTabParams.m_bAutoColor = TRUE; // 设置为 FALSE 将禁用 MDI 选项卡的自动着色
- mdiTabParams.m_bDocumentMenu = TRUE; // 在选项卡区域的右边缘启用文档菜单
- EnableMDITabbedGroups(TRUE, mdiTabParams);
- #endif
- if (!m_wndMenuBar.Create(this))
- {
- TRACE0("未能创建菜单栏\n");
- return -1; // 未能创建
- }
- m_wndMenuBar.SetPaneStyle(m_wndMenuBar.GetPaneStyle() | CBRS_SIZE_DYNAMIC | CBRS_TOOLTIPS | CBRS_FLYBY);
-
- // 防止菜单栏在激活时获得焦点
- CMFCPopupMenu::SetForceMenuFocus(FALSE);
- #if !HIDE_TOOLBAR
- if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
- !m_wndToolBar.LoadToolBar(theApp.m_bHiColorIcons ? IDR_MAINFRAME_256 : IDR_MAINFRAME))
- {
- TRACE0("未能创建工具栏\n");
- return -1; // 未能创建
- }
- CString strToolBarName;
- bNameValid = strToolBarName.LoadString(IDS_TOOLBAR_STANDARD);
- ASSERT(bNameValid);
- m_wndToolBar.SetWindowText(strToolBarName);
- CString strCustomize;
- bNameValid = strCustomize.LoadString(IDS_TOOLBAR_CUSTOMIZE);
- ASSERT(bNameValid);
- m_wndToolBar.EnableCustomizeButton(TRUE, ID_VIEW_CUSTOMIZE, strCustomize);
- #endif
- // 允许用户定义的工具栏操作:
- InitUserToolbars(nullptr, uiFirstUserToolBarId, uiLastUserToolBarId);
- if (!m_wndStatusBar.Create(this))
- {
- TRACE0("未能创建状态栏\n");
- return -1; // 未能创建
- }
- m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT));
- // TODO: 如果您不希望工具栏和菜单栏可停靠,请删除这五行
- m_wndMenuBar.EnableDocking(CBRS_ALIGN_ANY);
- #if !HIDE_TOOLBAR
- m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
- #endif
- EnableDocking(CBRS_ALIGN_ANY);
- DockPane(&m_wndMenuBar);
- #if !HIDE_TOOLBAR
- DockPane(&m_wndToolBar);
- #endif
- // 隐藏掉菜单条;
- #if HIDE_MENU_BAR
- m_wndMenuBar.ShowPane(FALSE, FALSE, FALSE);
- #endif
- // 启用 Visual Studio 2005 样式停靠窗口行为
- CDockingManager::SetDockingMode(DT_SMART);
- // 启用 Visual Studio 2005 样式停靠窗口自动隐藏行为
- EnableAutoHidePanes(CBRS_ALIGN_ANY);
- // 导航窗格将创建在左侧,因此将暂时禁用左侧的停靠:
- EnableDocking(CBRS_ALIGN_TOP | CBRS_ALIGN_BOTTOM | CBRS_ALIGN_RIGHT);
- #if ENABLE_OUTBAR
- // 创建并设置“Outlook”导航栏:
- if (!CreateOutlookBar(m_wndNavigationBar, ID_VIEW_NAVIGATION, m_wndTree, m_wndCalendar, 250))
- {
- TRACE0("未能创建导航窗格\n");
- return -1; // 未能创建
- }
- // 已创建 Outlook 栏,应允许在左侧停靠。
- EnableDocking(CBRS_ALIGN_LEFT);
- EnableAutoHidePanes(CBRS_ALIGN_RIGHT);
- #endif
- // 加载菜单项图像(不在任何标准工具栏上):
- CMFCToolBar::AddToolBarForImageCollection(IDR_MENU_IMAGES, theApp.m_bHiColorIcons ? IDB_MENU_IMAGES_24 : 0);
- // 创建停靠窗口
- if (!CreateDockingWindows())
- {
- TRACE0("未能创建停靠窗口\n");
- return -1;
- }
- #if ENABLE_FILE_CLASS
- m_wndFileView.EnableDocking(CBRS_ALIGN_ANY);
- m_wndClassView.EnableDocking(CBRS_ALIGN_ANY);
- DockPane(&m_wndFileView);
- CDockablePane* pTabbedBar = nullptr;
- m_wndClassView.AttachToTabWnd(&m_wndFileView, DM_SHOW, TRUE, &pTabbedBar);
- #endif
- #if ENABLE_TITILBAR
- m_wndTitleBar.EnableDocking(CBRS_ALIGN_TOP);
- DockPane(&m_wndTitleBar);
- #endif
- m_wndNavBar.EnableDocking(CBRS_ALIGN_LEFT);
- DockPane(&m_wndNavBar);
- #if ENABLE_OUTPUT
- m_wndOutput.EnableDocking(CBRS_ALIGN_ANY);
- DockPane(&m_wndOutput);
- #endif
- m_wndProperties.EnableDocking(CBRS_RIGHT);
- DockPane(&m_wndProperties);
- // 基于持久值设置视觉管理器和样式
- OnApplicationLook(theApp.m_nAppLook);
- // 启用增强的窗口管理对话框
- EnableWindowsDialog(ID_WINDOW_MANAGER, ID_WINDOW_MANAGER, TRUE);
- #if !HIDE_TOOLBAR
- // 启用工具栏和停靠窗口菜单替换
- EnablePaneMenu(TRUE, ID_VIEW_CUSTOMIZE, strCustomize, ID_VIEW_TOOLBAR);
- #endif
- // 启用快速(按住 Alt 拖动)工具栏自定义
- CMFCToolBar::EnableQuickCustomization();
- if (CMFCToolBar::GetUserImages() == nullptr)
- {
- // 加载用户定义的工具栏图像
- if (m_UserImages.Load(_T(".\\UserImages.bmp")))
- {
- CMFCToolBar::SetUserImages(&m_UserImages);
- }
- }
- // 启用菜单个性化(最近使用的命令)
- // TODO: 定义您自己的基本命令,确保每个下拉菜单至少有一个基本命令。
- CList<UINT, UINT> lstBasicCommands;
- lstBasicCommands.AddTail(ID_FILE_NEW);
- lstBasicCommands.AddTail(ID_FILE_OPEN);
- lstBasicCommands.AddTail(ID_FILE_SAVE);
- lstBasicCommands.AddTail(ID_FILE_PRINT);
- lstBasicCommands.AddTail(ID_APP_EXIT);
- lstBasicCommands.AddTail(ID_EDIT_CUT);
- lstBasicCommands.AddTail(ID_EDIT_PASTE);
- lstBasicCommands.AddTail(ID_EDIT_UNDO);
- lstBasicCommands.AddTail(ID_APP_ABOUT);
- lstBasicCommands.AddTail(ID_VIEW_STATUS_BAR);
- lstBasicCommands.AddTail(ID_VIEW_TOOLBAR);
- lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2003);
- lstBasicCommands.AddTail(ID_VIEW_APPLOOK_VS_2005);
- lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2007_BLUE);
- lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2007_SILVER);
- lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2007_BLACK);
- lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2007_AQUA);
- lstBasicCommands.AddTail(ID_VIEW_APPLOOK_WINDOWS_7);
- lstBasicCommands.AddTail(ID_SORTING_SORTALPHABETIC);
- lstBasicCommands.AddTail(ID_SORTING_SORTBYTYPE);
- lstBasicCommands.AddTail(ID_SORTING_SORTBYACCESS);
- lstBasicCommands.AddTail(ID_SORTING_GROUPBYTYPE);
- CMFCToolBar::SetBasicCommands(lstBasicCommands);
- // 将文档名和应用程序名称在窗口标题栏上的顺序进行交换。这
- // 将改进任务栏的可用性,因为显示的文档名带有缩略图。
- ModifyStyle(0, FWS_PREFIXTITLE);
- #if 1
- CChildFrameList::Init(this, m_pDoc);
- CChildFrameList::AppendView(_T("品牌"), RUNTIME_CLASS(CFormViewBrand), IDR_MAINFRAME, IDD_FORMVIEW_BRAND);
- CChildFrameList::AppendView(_T("季度"), RUNTIME_CLASS(CFormViewQuater), IDR_MAINFRAME, IDD_FORMVIEW_QUATER);
- CChildFrameList::AppendView(_T("季度品牌"), RUNTIME_CLASS(CFormViewQBrand), IDR_MAINFRAME, IDD_FORMVIEW_QUATER);
- #endif
- return 0;
- }
- BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
- {
- if( !CMDIFrameWndEx::PreCreateWindow(cs) )
- return FALSE;
- // TODO: 在此处通过修改
- // CREATESTRUCT cs 来修改窗口类或样式
- return TRUE;
- }
- BOOL CMainFrame::CreateDockingWindows()
- {
- BOOL bNameValid;
- #if ENABLE_FILE_CLASS
- // 创建类视图
- CString strClassView;
- bNameValid = strClassView.LoadString(IDS_CLASS_VIEW);
- ASSERT(bNameValid);
- if (!m_wndClassView.Create(strClassView, this, CRect(0, 0, 200, 200), TRUE, ID_VIEW_CLASSVIEW, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI))
- {
- TRACE0("未能创建“类视图”窗口\n");
- return FALSE; // 未能创建
- }
- // 创建文件视图
- CString strFileView;
- bNameValid = strFileView.LoadString(IDS_FILE_VIEW);
- ASSERT(bNameValid);
- if (!m_wndFileView.Create(strFileView, this, CRect(0, 0, 200, 200), TRUE, ID_VIEW_FILEVIEW, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT| CBRS_FLOAT_MULTI))
- {
- TRACE0("未能创建“文件视图”窗口\n");
- return FALSE; // 未能创建
- }
- #endif
- #if ENABLE_TITILBAR
- // 标题栏
- CString strFileView;
- bNameValid = strFileView.LoadString(IDS_FILE_VIEW);
- ASSERT(bNameValid);
- // 如何禁止改变大小:将最后2个默认参数全改为,将且删除注册表“应用程序向导生成的本地应用程序”才会生效;
- if (!m_wndTitleBar.Create(strFileView, this, CRect(0, 0, 200, 100), FALSE, ID_VIEW_FILEVIEW, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_TOP , 0, 0))
- {
- TRACE0("未能创建“文件视图”窗口\n");
- return FALSE; // 未能创建
- }
- #endif
- // 左导航栏
- CString strClassView;
- bNameValid = strClassView.LoadString(IDS_CLASS_VIEW);
- ASSERT(bNameValid);
- // 如何禁止改变大小:将最后2个默认参数全改为,将且删除注册表“应用程序向导生成的本地应用程序”才会生效;
- if (!m_wndNavBar.Create(strClassView, this, CRect(0, 0, 215, 200), FALSE, ID_VIEW_CLASSVIEW, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT, 0, 0))
- {
- TRACE0("未能创建“文件视图”窗口\n");
- return FALSE; // 未能创建
- }
- #if ENABLE_OUTPUT
- // 创建输出窗口
- CString strOutputWnd;
- bNameValid = strOutputWnd.LoadString(IDS_OUTPUT_WND);
- ASSERT(bNameValid);
- if (!m_wndOutput.Create(strOutputWnd, this, CRect(0, 0, 100, 100), TRUE, ID_VIEW_OUTPUTWND, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_BOTTOM | CBRS_FLOAT_MULTI))
- {
- TRACE0("未能创建输出窗口\n");
- return FALSE; // 未能创建
- }
- #endif
- // 创建属性窗口
- CString strPropertiesWnd;
- bNameValid = strPropertiesWnd.LoadString(IDS_PROPERTIES_WND);
- ASSERT(bNameValid);
- // 将参数4改为FALSE,就不会有Gripper;
- if (!m_wndProperties.Create(strPropertiesWnd, this, CRect(0, 0, 200, 200), FALSE, ID_VIEW_PROPERTIESWND, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_RIGHT | CBRS_FLOAT_MULTI, AFX_CBRS_REGULAR_TABS, AFX_CBRS_RESIZE))
- {
- TRACE0("未能创建“属性”窗口\n");
- return FALSE; // 未能创建
- }
- SetDockingWindowIcons(theApp.m_bHiColorIcons);
- return TRUE;
- }
- void CMainFrame::SetDockingWindowIcons(BOOL bHiColorIcons)
- {
- #if ENABLE_FILE_CLASS
- HICON hFileViewIcon = (HICON) ::LoadImage(::AfxGetResourceHandle(), MAKEINTRESOURCE(bHiColorIcons ? IDI_FILE_VIEW_HC : IDI_FILE_VIEW), IMAGE_ICON, ::GetSystemMetrics(SM_CXSMICON), ::GetSystemMetrics(SM_CYSMICON), 0);
- m_wndFileView.SetIcon(hFileViewIcon, FALSE);
- HICON hClassViewIcon = (HICON) ::LoadImage(::AfxGetResourceHandle(), MAKEINTRESOURCE(bHiColorIcons ? IDI_CLASS_VIEW_HC : IDI_CLASS_VIEW), IMAGE_ICON, ::GetSystemMetrics(SM_CXSMICON), ::GetSystemMetrics(SM_CYSMICON), 0);
- m_wndClassView.SetIcon(hClassViewIcon, FALSE);
- #endif
- #if ENABLE_OUTPUT
- HICON hOutputBarIcon = (HICON) ::LoadImage(::AfxGetResourceHandle(), MAKEINTRESOURCE(bHiColorIcons ? IDI_OUTPUT_WND_HC : IDI_OUTPUT_WND), IMAGE_ICON, ::GetSystemMetrics(SM_CXSMICON), ::GetSystemMetrics(SM_CYSMICON), 0);
- m_wndOutput.SetIcon(hOutputBarIcon, FALSE);
- #endif
- HICON hPropertiesBarIcon = (HICON) ::LoadImage(::AfxGetResourceHandle(), MAKEINTRESOURCE(bHiColorIcons ? IDI_PROPERTIES_WND_HC : IDI_PROPERTIES_WND), IMAGE_ICON, ::GetSystemMetrics(SM_CXSMICON), ::GetSystemMetrics(SM_CYSMICON), 0);
- m_wndProperties.SetIcon(hPropertiesBarIcon, FALSE);
- UpdateMDITabbedBarsIcons();
- }
- BOOL CMainFrame::CreateOutlookBar(CMFCOutlookBar& bar, UINT uiID, CMFCShellTreeCtrl& tree, CCalendarBar& calendar, int nInitialWidth)
- {
- bar.SetMode2003();
- BOOL bNameValid;
- CString strTemp;
- bNameValid = strTemp.LoadString(IDS_SHORTCUTS);
- ASSERT(bNameValid);
- if (!bar.Create(strTemp, this, CRect(0, 0, nInitialWidth, 32000), uiID, WS_CHILD | WS_VISIBLE | CBRS_LEFT))
- {
- return FALSE; // 未能创建
- }
- CMFCOutlookBarTabCtrl* pOutlookBar = (CMFCOutlookBarTabCtrl*)bar.GetUnderlyingWindow();
- if (pOutlookBar == nullptr)
- {
- ASSERT(FALSE);
- return FALSE;
- }
- //pOutlookBar->EnableInPlaceEdit(TRUE);
- static UINT uiPageID = 1;
- // 可浮动,可自动隐藏,可调整大小,但不能关闭
- DWORD dwStyle = AFX_CBRS_FLOAT | AFX_CBRS_AUTOHIDE | AFX_CBRS_RESIZE;
- CRect rectDummy(0, 0, 0, 0);
- const DWORD dwTreeStyle = WS_CHILD | WS_VISIBLE | TVS_HASLINES | TVS_LINESATROOT | TVS_HASBUTTONS;
- /*tree.Create(dwTreeStyle, rectDummy, &bar, 1200);
- bNameValid = strTemp.LoadString(IDS_FOLDERS);
- ASSERT(bNameValid);
- pOutlookBar->AddControl(&tree, strTemp, 2, TRUE, dwStyle);*/
- calendar.Create(rectDummy, &bar, 1201);
- bNameValid = strTemp.LoadString(IDS_CALENDAR);
- ASSERT(bNameValid);
- pOutlookBar->AddControl(&calendar, strTemp, 3, TRUE, dwStyle);
- //bar.SetPaneStyle(bar.GetPaneStyle() | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
- //pOutlookBar->SetImageList(theApp.m_bHiColorIcons ? IDB_PAGES_HC : IDB_PAGES, 24);
- //pOutlookBar->SetToolbarImageList(theApp.m_bHiColorIcons ? IDB_PAGES_SMALL_HC : IDB_PAGES_SMALL, 16);
- pOutlookBar->RecalcLayout();
- BOOL bAnimation = theApp.GetInt(_T("OutlookAnimation"), TRUE);
- //CMFCOutlookBarTabCtrl::EnableAnimation(bAnimation);
- bar.SetButtonsFont(&afxGlobalData.fontBold);
- return TRUE;
- }
- // CMainFrame 诊断
- #ifdef _DEBUG
- void CMainFrame::AssertValid() const
- {
- CMDIFrameWndEx::AssertValid();
- }
- void CMainFrame::Dump(CDumpContext& dc) const
- {
- CMDIFrameWndEx::Dump(dc);
- }
- #endif //_DEBUG
- // CMainFrame 消息处理程序
- void CMainFrame::OnWindowManager()
- {
- ShowWindowsDialog();
- }
- void CMainFrame::OnViewCustomize()
- {
- CMFCToolBarsCustomizeDialog* pDlgCust = new CMFCToolBarsCustomizeDialog(this, TRUE /* 扫描菜单*/);
- pDlgCust->EnableUserDefinedToolbars();
- pDlgCust->Create();
- }
- LRESULT CMainFrame::OnToolbarCreateNew(WPARAM wp,LPARAM lp)
- {
- LRESULT lres = CMDIFrameWndEx::OnToolbarCreateNew(wp,lp);
- if (lres == 0)
- {
- return 0;
- }
- CMFCToolBar* pUserToolbar = (CMFCToolBar*)lres;
- ASSERT_VALID(pUserToolbar);
- BOOL bNameValid;
- CString strCustomize;
- bNameValid = strCustomize.LoadString(IDS_TOOLBAR_CUSTOMIZE);
- ASSERT(bNameValid);
- pUserToolbar->EnableCustomizeButton(TRUE, ID_VIEW_CUSTOMIZE, strCustomize);
- return lres;
- }
- void CMainFrame::OnApplicationLook(UINT id)
- {
- CWaitCursor wait;
- theApp.m_nAppLook = id;
- switch (theApp.m_nAppLook)
- {
- case ID_VIEW_APPLOOK_WIN_2000:
- CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManager));
- break;
- case ID_VIEW_APPLOOK_OFF_XP:
- CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerOfficeXP));
- break;
- case ID_VIEW_APPLOOK_WIN_XP:
- CMFCVisualManagerWindows::m_b3DTabsXPTheme = TRUE;
- CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows));
- break;
- case ID_VIEW_APPLOOK_OFF_2003:
- CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerOffice2003));
- CDockingManager::SetDockingMode(DT_SMART);
- break;
- case ID_VIEW_APPLOOK_VS_2005:
- CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerVS2005));
- CDockingManager::SetDockingMode(DT_SMART);
- break;
- case ID_VIEW_APPLOOK_VS_2008:
- CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerVS2008));
- CDockingManager::SetDockingMode(DT_SMART);
- break;
- case ID_VIEW_APPLOOK_WINDOWS_7:
- CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows7));
- CDockingManager::SetDockingMode(DT_SMART);
- break;
- default:
- switch (theApp.m_nAppLook)
- {
- case ID_VIEW_APPLOOK_OFF_2007_BLUE:
- CMFCVisualManagerOffice2007::SetStyle(CMFCVisualManagerOffice2007::Office2007_LunaBlue);
- break;
- case ID_VIEW_APPLOOK_OFF_2007_BLACK:
- CMFCVisualManagerOffice2007::SetStyle(CMFCVisualManagerOffice2007::Office2007_ObsidianBlack);
- break;
- case ID_VIEW_APPLOOK_OFF_2007_SILVER:
- CMFCVisualManagerOffice2007::SetStyle(CMFCVisualManagerOffice2007::Office2007_Silver);
- break;
- case ID_VIEW_APPLOOK_OFF_2007_AQUA:
- CMFCVisualManagerOffice2007::SetStyle(CMFCVisualManagerOffice2007::Office2007_Aqua);
- break;
- }
- CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerOffice2007));
- CDockingManager::SetDockingMode(DT_SMART);
- }
- #if ENABLE_OUTPUT
- m_wndOutput.UpdateFonts();
- #endif
- RedrawWindow(nullptr, nullptr, RDW_ALLCHILDREN | RDW_INVALIDATE | RDW_UPDATENOW | RDW_FRAME | RDW_ERASE);
- theApp.WriteInt(_T("ApplicationLook"), theApp.m_nAppLook);
- }
- void CMainFrame::OnUpdateApplicationLook(CCmdUI* pCmdUI)
- {
- pCmdUI->SetRadio(theApp.m_nAppLook == pCmdUI->m_nID);
- }
- BOOL CMainFrame::LoadFrame(UINT nIDResource, DWORD dwDefaultStyle, CWnd* pParentWnd, CCreateContext* pContext)
- {
- // 基类将执行真正的工作
- if (!CMDIFrameWndEx::LoadFrame(nIDResource, dwDefaultStyle, pParentWnd, pContext))
- {
- return FALSE;
- }
- // 为所有用户工具栏启用自定义按钮
- BOOL bNameValid;
- CString strCustomize;
- bNameValid = strCustomize.LoadString(IDS_TOOLBAR_CUSTOMIZE);
- ASSERT(bNameValid);
- for (int i = 0; i < iMaxUserToolbars; i ++)
- {
- CMFCToolBar* pUserToolbar = GetUserToolBarByIndex(i);
- if (pUserToolbar != nullptr)
- {
- pUserToolbar->EnableCustomizeButton(TRUE, ID_VIEW_CUSTOMIZE, strCustomize);
- }
- }
- return TRUE;
- }
- void CMainFrame::OnSettingChange(UINT uFlags, LPCTSTR lpszSection)
- {
- CMDIFrameWndEx::OnSettingChange(uFlags, lpszSection);
- #if ENABLE_OUTPUT
- m_wndOutput.UpdateFonts();
- #endif
- }
|