轉(zhuǎn)帖|使用教程|編輯:莫成敏|2020-03-12 10:54:34.040|閱讀 600 次
概述:本文介紹在BCGControlBar中,如何使用SetVisualTheme()函數(shù)解決Ribbon界面一直顯示File按鈕的問(wèn)題。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門(mén)軟控件火熱銷售中 >>
BCGSoft公司的BCGControlBar產(chǎn)品是全球最優(yōu)秀的MFC界面類庫(kù),功能強(qiáng)大,顯示豐富,在國(guó)際上享有盛譽(yù),并屢次獲獎(jiǎng),是VC界面設(shè)計(jì)的必備首選!
BCGControlBar Professional Edition for MFC是MFC的一個(gè)擴(kuò)展庫(kù),您可以用來(lái)構(gòu)建類似于Microsoft Office。BCGControlBar的這個(gè)擴(kuò)展庫(kù)包含了300多個(gè)經(jīng)過(guò)精心設(shè)計(jì),測(cè)試和具有完備文檔的MFC擴(kuò)展類。BCGControlBar控件能輕松的融入應(yīng)用程序中,節(jié)約大量的的開(kāi)發(fā)和調(diào)試時(shí)間。
方法一:
缺點(diǎn):需要修改BCGControlbar庫(kù)代碼。
1、打開(kāi)BCGCBPro100.sln(對(duì)應(yīng)于VS 2010)或者BCGCBPro***.sln,找到CPP文件:BCGPWorkSpace.cpp
2、在BCGPWorkSpace.cpp文件中找到SetVisualTheme函數(shù)中將_T("File")替換為_(kāi)T("文件")即可,重新編譯,采用新生成的DLL運(yùn)行我們的ribbon程序。
void CBCGPWinApp::SetVisualTheme(BCGP_VISUAL_THEME theme)
{
//中的_T("File");
//替換為_(kāi)T("文件");
m_AppOptions.m_strScenicRibbonLabel = _T("File");
}
方法二:
1、在CMainFrame類中實(shí)現(xiàn)虛函數(shù)RecalcLayout(),應(yīng)為每次系統(tǒng)調(diào)用了SetVisualTheme()后,都是調(diào)用RecalcLayout()進(jìn)行重新布局,重新布局的過(guò)程中我們?cè)俅卧O(shè)置一下CBCGPRibbonMainButton的顯示文字就會(huì)修改過(guò)來(lái)了。
void CMainFrame::RecalcLayout(BOOL bNotify)
{
// TODO: Add your specialized code here and/or call the base class
if (m_wndRibbonBar.GetSafeHwnd())
{
CString strInfo = _T("文件");
CBCGPRibbonMainButton* pRibbonMainButton = m_wndRibbonBar.GetMainButton();
if (pRibbonMainButton!=NULL)
{
pRibbonMainButton->SetScenicText(strInfo);
m_wndRibbonBar.SetMainButton(pRibbonMainButton, CSize(70, 45));
}
}
CBCGPFrameWnd::RecalcLayout(bNotify);
}
原始樣式

修改后樣式

另一個(gè)Ribbon界面問(wèn)題:當(dāng)我們點(diǎn)擊上面的文件按鈕時(shí),發(fā)現(xiàn)下拉框的位置與文件按鈕的位置平行的,如果我們使用office2016的clorful主題會(huì)非常明顯,處女座的看起來(lái)估計(jì)就有點(diǎn)難受。這個(gè)就必須得修改BCGControlbar的源代碼了。
1、打開(kāi)BCGCBPro100.sln(對(duì)應(yīng)于VS 2010)或者BCGCBPro***.sln,找到CPP文件: BCGPRibbonBar.cpp。
2、在BCGPRibbonBar.cpp文件中找到BOOL CBCGPRibbonMainButton::ShowMainMenu ()函數(shù),修改注釋行下面的代碼:
else
{
if (!m_pRibbonBar->OnBeforeShowMainPanel())
{
return FALSE;
}
CBCGPRibbonPanelMenu* pMenu = new CBCGPRibbonPanelMenu (pPanel);
pMenu->SetParentRibbonElement (this);
//注釋掉減去的那個(gè)tab高度
const int y = m_pRibbonBar->IsScenicLook () ? rectBtn.bottom /*- m_pRibbonBar->m_nTabsHeight*/ - 1 : rectBtn.CenterPoint ().y;
pMenu->Create (m_pRibbonBar, bIsRTL ? rectBtn.right : rectBtn.left, y, (HMENU) NULL);
SetDroppedDown (pMenu);
}
原始樣式

修改后樣式

本文內(nèi)容就是這樣了,希望對(duì)您有所幫助!您可以下載BCGControlBar試用版免費(fèi)評(píng)估~
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@ke049m.cn
文章轉(zhuǎn)載自: