首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MFC功能区面板名称问题

MFC功能区面板名称问题
EN

Stack Overflow用户
提问于 2014-09-04 18:29:52
回答 1查看 520关注 0票数 1

How do I rename the MFC ribbon panel?,我有一个相关的问题。我的ribbon在资源中的原始标题是A语言。我用B语言翻译所有内容,包括面板的名称(使用一种方法,类似于上述主题中提供的方法)。但是,当我缩小窗口以使部分(或全部)面板折叠时,它们的名称将恢复为语言A。当我加宽窗口时,面板的名称将再次转换为语言B。仍然没有找到解决方案。有人知道吗?:/ EDIT:我们使用一个translator类来处理标志,所以,根据语言标志,它翻译字符串,然后应用到类别,按钮等。我做了我自己的面板类,它从CMFCRibbonPanel派生。我添加了这个方法:

代码语言:javascript
复制
void CRibbonPanel::setName(CString name)  
{  
    m_strName = name;  
}  

然后我做一个循环来查找和编辑每个面板的名称:

代码语言:javascript
复制
(CRibbonPanel*)thePanel->setName(theNewName);  

它工作得很好,但当面板折叠时,它们的标题将恢复为默认语言。

EN

回答 1

Stack Overflow用户

发布于 2015-03-06 18:12:58

折叠的面板标题存储在“默认面板按钮”中。扩展访问器类,如下所示:

代码语言:javascript
复制
class CRibbonPanel : public CMFCRibbonPanel
{
public:
    void SetName(CString& name ) 
    { m_strName = name; };

    CMFCRibbonDefaultPanelButton & GetDefBtn() 
    { return m_btnDefault; }
};

然后像这样使用:

代码语言:javascript
复制
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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25663159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档