How do I rename the MFC ribbon panel?,我有一个相关的问题。我的ribbon在资源中的原始标题是A语言。我用B语言翻译所有内容,包括面板的名称(使用一种方法,类似于上述主题中提供的方法)。但是,当我缩小窗口以使部分(或全部)面板折叠时,它们的名称将恢复为语言A。当我加宽窗口时,面板的名称将再次转换为语言B。仍然没有找到解决方案。有人知道吗?:/ EDIT:我们使用一个translator类来处理标志,所以,根据语言标志,它翻译字符串,然后应用到类别,按钮等。我做了我自己的面板类,它从CMFCRibbonPanel派生。我添加了这个方法:
void CRibbonPanel::setName(CString name)
{
m_strName = name;
} 然后我做一个循环来查找和编辑每个面板的名称:
(CRibbonPanel*)thePanel->setName(theNewName); 它工作得很好,但当面板折叠时,它们的标题将恢复为默认语言。
发布于 2015-03-06 18:12:58
折叠的面板标题存储在“默认面板按钮”中。扩展访问器类,如下所示:
class CRibbonPanel : public CMFCRibbonPanel
{
public:
void SetName(CString& name )
{ m_strName = name; };
CMFCRibbonDefaultPanelButton & GetDefBtn()
{ return m_btnDefault; }
};然后像这样使用:
void ChangeText(CMFCRibbonPanel * pPanel, CString & newText)
{
auto pMyPanel = (CRibbonPanel *)(pPanel);
auto & defBtn = pMyPanel->GetDefBtn();
defBtn.SetText(newText);
}MFC功能区界面并不是一个完美的抽象。幸运的是,微软发布了ribbon实现的源代码。在我的机器上,面板代码位于:
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\atlmfc\src\mfc\afxribbonpanel.cpp
https://stackoverflow.com/questions/25663159
复制相似问题