gpt4 book ai didi

c++ - MFC 功能区面板名称问题

转载 作者:行者123 更新时间:2023-11-30 04:01:34 26 4
gpt4 key购买 nike

How do I rename the MFC ribbon panel?我有一个相关的问题。我的功能区在资源中的原始标题是语言 A。我用语言 B 翻译所有内容,包括面板的名称(使用类似于上述主题中提供的方法)。但是,当我缩小窗口以使部分(或全部)面板折叠时,它们的名称将返回语言 A。当我加宽窗口时,面板的名称将再次翻译为语言 B。仍然没有找到解决方案。有人知道吗? :/编辑:我们使用一个与标志一起工作的翻译器类,因此,根据语言标志,它翻译字符串,然后将其应用于类别、按钮等。我制作了我自己的面板类,它派生自 CMFCRibbonPanel。我添加了这个方法:

void CRibbonPanel::setName(CString name)  
{
m_strName = name;
}

然后我循环查找并编辑每个面板的名称:

(CRibbonPanel*)thePanel->setName(theNewName);  

它工作正常,但当面板折叠时,它们的字幕会恢复为默认语言。

最佳答案

折叠面板标题存储在“默认面板按钮”中。像这样扩展访问器类:

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 功能区界面并不是一个完美的抽象。幸运的是,Microsoft 分发了功能区实现的源代码。在我的机器上,面板代码位于:

C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\atlmfc\src\mfc\afxribbonpanel.cpp

关于c++ - MFC 功能区面板名称问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25663159/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com