BOOL CMainFrame::LoadFrame(UINT nIDResource, DWORD dwDefaultStyle, CWnd* pParentWnd, CCreateContext* pContext) { // 기본 클래스가 실제 작업을 수행합니다. if (!CFrameWndEx::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 != NULL) { pUserToolbar->EnableCustomizeButton(TRUE, ID_VIEW_CUSTOMIZE, strCustomize); } } return TRUE; }
BOOL CMainFrame::LoadFrame(UINT nIDResource, DWORD dwDefaultStyle, CWnd* pParentWnd, CCreateContext* pContext) { // 基类将执行真正的工作 if (!CFrameWndEx::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 != NULL) { pUserToolbar->EnableCustomizeButton(TRUE, ID_VIEW_CUSTOMIZE, strCustomize); } } SetTimer(12,100,NULL); //启动扫描消息驱动 return TRUE; }
BOOL CMainFrame::LoadFrame(UINT nIDResource, DWORD dwDefaultStyle, CWnd* pParentWnd, CCreateContext* pContext) { // base class does the real work if (!CFrameWndEx::LoadFrame(nIDResource, dwDefaultStyle, pParentWnd, pContext)) { return FALSE; } // enable customization button for all user toolbars 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 != NULL) { pUserToolbar->EnableCustomizeButton(TRUE, ID_VIEW_CUSTOMIZE, strCustomize); } } return TRUE; }
/// <summary>Enable customization on user created toolsbars. (App-Wizard generated)</summary> /// <param name="wp">The wp.</param> /// <param name="lp">The lp.</param> /// <returns></returns> LRESULT MainWnd::OnCreateNewToolbar(WPARAM wp, LPARAM lp) { LRESULT lres = CMDIFrameWndEx::OnToolbarCreateNew(wp,lp); if (lres == 0) return 0; CMFCToolBar* pUserToolbar = (CMFCToolBar*)lres; ASSERT_VALID(pUserToolbar); pUserToolbar->EnableCustomizeButton(TRUE, ID_VIEW_CUSTOMIZE, GuiString(IDS_TOOLBAR_CUSTOMIZE).c_str()); return lres; }
//*************************************************************************************** LRESULT CMainFrame::OnToolbarCreateNew(WPARAM wp,LPARAM lp) { LRESULT lres = CFrameWndEx::OnToolbarCreateNew (wp,lp); if (lres == 0) { return 0; } CMFCToolBar* pUserToolbar = (CMFCToolBar*) lres; ASSERT_VALID (pUserToolbar); pUserToolbar->EnableCustomizeButton (TRUE, ID_VIEW_CUSTOMIZE, _T("Customize...")); pUserToolbar->AdjustLayout (); return lres; }
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; }
/// <summary>Loads the frame.</summary> /// <param name="nIDResource">The n identifier resource.</param> /// <param name="dwDefaultStyle">The dw default style.</param> /// <param name="pParentWnd">The p parent WND.</param> /// <param name="pContext">The p context.</param> /// <returns></returns> BOOL MainWnd::LoadFrame(UINT nIDResource, DWORD dwDefaultStyle, CWnd* pParentWnd, CCreateContext* pContext) { // base class does the real work if (!CMDIFrameWndEx::LoadFrame(nIDResource, dwDefaultStyle, pParentWnd, pContext)) return FALSE; // enable customization button for all user toolbars GuiString szCustomize(IDS_TOOLBAR_CUSTOMIZE); for (int i = 0; i < iMaxUserToolbars; i ++) { CMFCToolBar* pUserToolbar = GetUserToolBarByIndex(i); if (pUserToolbar != NULL) pUserToolbar->EnableCustomizeButton(TRUE, ID_VIEW_CUSTOMIZE, szCustomize.c_str()); } return TRUE; }
CMFCToolBar* WorkspacePane::CreateToolBar(CRuntimeClass* type, UINT id, UINT style) { AFXASSUME(type); CMFCToolBar* toolBar = dynamic_cast<CMFCToolBar*>(type->CreateObject()); ENSURE(toolBar); toolBar->Create(this, style | WS_TABSTOP, id); toolBar->ModifyStyleEx(0, WS_EX_CONTROLPARENT); toolBar->LoadToolBar(id, 0, 0, TRUE); if (PrivateToolBar* p = dynamic_cast<PrivateToolBar*>(toolBar)) p->AdjustStyle(); toolBar->SetRouteCommandsViaFrame(FALSE); toolBar_ = toolBar; return toolBar; }
//************************************************************************************** BOOL CMainFrame::LoadFrame(UINT nIDResource, DWORD dwDefaultStyle, CWnd* pParentWnd, CCreateContext* pContext) { if (!CFrameWndEx::LoadFrame(nIDResource, dwDefaultStyle, pParentWnd, pContext)) { return FALSE; } //---------------------------------------------------- // Enable customization button fore all user toolbars: //---------------------------------------------------- for (int i = 0; i < iMaxUserToolbars; i ++) { CMFCToolBar* pUserToolbar = GetUserToolBarByIndex (i); if (pUserToolbar != NULL) { pUserToolbar->EnableCustomizeButton (TRUE, ID_VIEW_CUSTOMIZE, _T("Customize...")); } } return TRUE; }
void AFX_GLOBAL_DATA::UpdateFonts() { CWindowDC dc(NULL); m_dblRibbonImageScale = dc.GetDeviceCaps(LOGPIXELSX) / 96.0f; if (m_dblRibbonImageScale > 1. && m_dblRibbonImageScale < 1.1) { m_dblRibbonImageScale = 1.; } if (fontRegular.GetSafeHandle() != NULL) { ::DeleteObject(fontRegular.Detach()); } if (fontTooltip.GetSafeHandle() != NULL) { ::DeleteObject(fontTooltip.Detach()); } if (fontBold.GetSafeHandle() != NULL) { ::DeleteObject(fontBold.Detach()); } if (fontDefaultGUIBold.GetSafeHandle() != NULL) { ::DeleteObject(fontDefaultGUIBold.Detach()); } if (fontUnderline.GetSafeHandle() != NULL) { ::DeleteObject(fontUnderline.Detach()); } if (fontDefaultGUIUnderline.GetSafeHandle() != NULL) { ::DeleteObject(fontDefaultGUIUnderline.Detach()); } if (fontVert.GetSafeHandle() != NULL) { ::DeleteObject(fontVert.Detach()); } if (fontVertCaption.GetSafeHandle() != NULL) { ::DeleteObject(fontVertCaption.Detach()); } if (fontMarlett.GetSafeHandle() != NULL) { ::DeleteObject(fontMarlett.Detach()); } if (fontSmall.GetSafeHandle() != NULL) { ::DeleteObject(fontSmall.Detach()); } // Initialize fonts: NONCLIENTMETRICS info; info.cbSize = sizeof(info); GetNonClientMetrics (info); LOGFONT lf; memset(&lf, 0, sizeof(LOGFONT)); lf.lfCharSet = (BYTE) GetTextCharsetInfo(dc.GetSafeHdc(), NULL, 0); lf.lfHeight = info.lfMenuFont.lfHeight; lf.lfWeight = info.lfMenuFont.lfWeight; lf.lfItalic = info.lfMenuFont.lfItalic; //------------------ // Adjust font size: //------------------ int nFontHeight = lf.lfHeight < 0 ? -lf.lfHeight : lf.lfHeight; if (nFontHeight <= 12) { nFontHeight = 11; } else if (!m_bDontReduceFontHeight) { nFontHeight--; } lf.lfHeight = (lf.lfHeight < 0) ? -nFontHeight : nFontHeight; // Check if we should use system font lstrcpy(lf.lfFaceName, info.lfMenuFont.lfFaceName); BOOL fUseSystemFont = m_bUseSystemFont || (info.lfMenuFont.lfCharSet > SYMBOL_CHARSET); if (!fUseSystemFont) { // Check for "Segoe UI" or "Tahoma" font existance: if (::EnumFontFamilies(dc.GetSafeHdc(), NULL, FontFamilyProcFonts, (LPARAM)(LPCTSTR) AFX_FONT_NAME_OFFICE_2007) == 0) { // Found! Use MS Office 2007 font! lstrcpy(lf.lfFaceName, AFX_FONT_NAME_OFFICE_2007); lf.lfQuality = 5 /*CLEARTYPE_QUALITY*/; } else if (::EnumFontFamilies(dc.GetSafeHdc(), NULL, FontFamilyProcFonts, (LPARAM)(LPCTSTR) AFX_FONT_NAME_OFFICE) == 0) { // Found! Use MS Office font! lstrcpy(lf.lfFaceName, AFX_FONT_NAME_OFFICE); } else { // Not found. Use default font: lstrcpy(lf.lfFaceName, AFX_FONT_NAME_DEFAULT); } } fontRegular.CreateFontIndirect(&lf); // Create small font: LONG lfHeightSaved = lf.lfHeight; lf.lfHeight = (long)((1. + abs(lf.lfHeight)) * 2 / 3); if (lfHeightSaved < 0) { lf.lfHeight = -lf.lfHeight; } fontSmall.CreateFontIndirect(&lf); lf.lfHeight = lfHeightSaved; // Create tooltip font: NONCLIENTMETRICS ncm; ncm.cbSize = sizeof(ncm); GetNonClientMetrics (ncm); lf.lfItalic = ncm.lfStatusFont.lfItalic; lf.lfWeight = ncm.lfStatusFont.lfWeight; fontTooltip.CreateFontIndirect(&lf); lf.lfItalic = info.lfMenuFont.lfItalic; lf.lfWeight = info.lfMenuFont.lfWeight; // Create "underline" font: lf.lfUnderline = TRUE; fontUnderline.CreateFontIndirect(&lf); lf.lfUnderline = FALSE; // Create bold font: lf.lfWeight = FW_BOLD; fontBold.CreateFontIndirect(&lf); // Create Marlett font: BYTE bCharSet = lf.lfCharSet; lf.lfWeight = info.lfMenuFont.lfWeight; lf.lfCharSet = SYMBOL_CHARSET; lf.lfWeight = 0; lf.lfHeight = ::GetSystemMetrics(SM_CYMENUCHECK) - 1; lstrcpy(lf.lfFaceName, AFX_FONT_NAME_MARLETT); fontMarlett.CreateFontIndirect(&lf); lf.lfCharSet = bCharSet; // Restore charset // Create vertical font: CFont font; if (font.CreateStockObject(DEFAULT_GUI_FONT)) { if (font.GetLogFont(&lf) != 0) { lf.lfOrientation = 900; lf.lfEscapement = 2700; lf.lfHeight = info.lfMenuFont.lfHeight; lf.lfWeight = info.lfMenuFont.lfWeight; lf.lfItalic = info.lfMenuFont.lfItalic; { lstrcpy(lf.lfFaceName, AFX_FONT_NAME_VERT); } fontVert.CreateFontIndirect(&lf); lf.lfEscapement = 900; fontVertCaption.CreateFontIndirect(&lf); } } // Create dialog underline and bold fonts: CFont* pDefaultGUIFont = CFont::FromHandle((HFONT) GetStockObject(DEFAULT_GUI_FONT)); ASSERT_VALID(pDefaultGUIFont); pDefaultGUIFont->GetLogFont(&lf); lf.lfUnderline = TRUE; fontDefaultGUIUnderline.CreateFontIndirect(&lf); lf.lfUnderline = FALSE; lf.lfWeight = FW_BOLD; fontDefaultGUIBold.CreateFontIndirect(&lf); UpdateTextMetrics(); #if 0 // Notify toolbars about font changing: for (POSITION posTlb = afxAllToolBars.GetHeadPosition(); posTlb != NULL;) { CMFCToolBar* pToolBar = (CMFCToolBar*) afxAllToolBars.GetNext(posTlb); ENSURE(pToolBar != NULL); if (CWnd::FromHandlePermanent(pToolBar->m_hWnd) != NULL) { ASSERT_VALID(pToolBar); pToolBar->OnGlobalFontsChanged(); } } #endif }