最近在工作中,遇到了需要将软件从中文转成英文的问题。通常来说,MFC界面上的控件均可以用SetWindowText来解决。但对于Ribbon,往往不怎么好使。也是从网上找了很多资料,最终总结如下。

先上效果图

中文版:

英文版:

如图中,我的界面包括了Ribbon界面中的三种控件,Panel,Button,Category。

当需要从代码去修改时,代码如下

//对于Category界面,修改方法为在MainFrm中的OnCreate生成界面的函数中,加入如下代码

CMFCRibbonCategory *pCategory = m_wndRibbonBar.GetCategory(1);
pCategory->SetName(_T("System"));

//对于Panel界面,修改方法如下,但要特别注意。Panel可能是设计时就没有考虑的问题,直接来说,是不能修改的,只能通过新建子类去进行强转

强转子类如下,新建MFC类,继续MFCRibbonPanel

.h文件为

#pragma once
#include "afxribbonpanel.h"

//继承RibbonPanel的子类
class MyRibbonPanel :public CMFCRibbonPanel
{
public:
MyRibbonPanel(void);
~MyRibbonPanel(void);
void SetPanelName(CString name);
};

.cpp文件为

#include "StdAfx.h"
#include "MyRibbonPanel.h"

MyRibbonPanel::MyRibbonPanel(void)
{
}

MyRibbonPanel::~MyRibbonPanel(void)
{
}

void MyRibbonPanel::SetPanelName(CString name)
{

  //在这里进行名字转行赋值
  m_strName=name;
}

然后,我们在MainFrm中,加载上述类然后,转换界面名字代码如下

CMFCRibbonPanel *pPanel1 = pCategory->GetPanel(0);
MyRibbonPanel* pMyPanel1 = (MyRibbonPanel*)pPanel1;//这里把父类的对象强制转换成子类对象,没有报错,说明可以转换
pMyPanel1->SetPanelName(_T("User Manage"));
CMFCRibbonPanel *pPanel2 = pCategory->GetPanel(1);
MyRibbonPanel* pMyPanel2 = (MyRibbonPanel*)pPanel2;//这里把父类的对象强制转换成子类对象,没有报错,说明可以转换
pMyPanel2->SetPanelName(_T("Motor Control Panel"));
CMFCRibbonPanel *pPanel3 = pCategory->GetPanel(2);
MyRibbonPanel* pMyPanel3 = (MyRibbonPanel*)pPanel3;//这里把父类的对象强制转换成子类对象,没有报错,说明可以转换
pMyPanel3->SetPanelName(_T("Robot Control Panel"));
CMFCRibbonPanel *pPanel4 = pCategory->GetPanel(3);
MyRibbonPanel* pMyPanel4 = (MyRibbonPanel*)pPanel4;//这里把父类的对象强制转换成子类对象,没有报错,说明可以转换
pMyPanel4->SetPanelName(_T("Equipment Info"));

//对于按钮,转换代码如下

CMFCRibbonButton* pRibbonBtn = DYNAMIC_DOWNCAST(CMFCRibbonButton, m_wndRibbonBar.FindByID(ID_TOOLS_BTN_LOGIN));
pRibbonBtn->SetText(_T("Login"));

pRibbonBtn = DYNAMIC_DOWNCAST(CMFCRibbonButton, m_wndRibbonBar.FindByID(ID_TOOLS_BTN_LOGOFF));
pRibbonBtn->SetText(_T("Logout"));

pRibbonBtn = DYNAMIC_DOWNCAST(CMFCRibbonButton, m_wndRibbonBar.FindByID(ID_TOOLS_BTN_MANAGER));
pRibbonBtn->SetText(_T("Edit"));

pRibbonBtn = DYNAMIC_DOWNCAST(CMFCRibbonButton, m_wndRibbonBar.FindByID(ID_TOOLS_BTN_AXISMOTION));
pRibbonBtn->SetText(_T("Axis Control"));

pRibbonBtn = DYNAMIC_DOWNCAST(CMFCRibbonButton, m_wndRibbonBar.FindByID(ID_TOOLS_BTN_IOTEST1));
pRibbonBtn->SetText(_T("IO CARD 1"));

pRibbonBtn = DYNAMIC_DOWNCAST(CMFCRibbonButton, m_wndRibbonBar.FindByID(ID_TOOLS_BTN_IOTEST2));
pRibbonBtn->SetText(_T("IO CARD 2"));

pRibbonBtn = DYNAMIC_DOWNCAST(CMFCRibbonButton, m_wndRibbonBar.FindByID(ID_TOOLS_BTN_IOTEST3));
pRibbonBtn->SetText(_T("IO CARD 3"));

pRibbonBtn = DYNAMIC_DOWNCAST(CMFCRibbonButton, m_wndRibbonBar.FindByID(ID_TOOLS_BTN_IOTEST4));
pRibbonBtn->SetText(_T("IO CARD 4"));

pRibbonBtn = DYNAMIC_DOWNCAST(CMFCRibbonButton, m_wndRibbonBar.FindByID(ID_TOOLS_BTN_IOTEST5));
pRibbonBtn->SetText(_T("IO CARD 5"));

pRibbonBtn = DYNAMIC_DOWNCAST(CMFCRibbonButton, m_wndRibbonBar.FindByID(ID_TOOLS_BTN_IOTEST6));
pRibbonBtn->SetText(_T("IO CARD 6"));

pRibbonBtn = DYNAMIC_DOWNCAST(CMFCRibbonButton, m_wndRibbonBar.FindByID(ID_TOOLS_BTN_IOTEST7));
pRibbonBtn->SetText(_T("IO CARD 7"));

pRibbonBtn = DYNAMIC_DOWNCAST(CMFCRibbonButton, m_wndRibbonBar.FindByID(ID_TOOLS_BTN_IOTEST8));
pRibbonBtn->SetText(_T("IO CARD 8"));

pRibbonBtn = DYNAMIC_DOWNCAST(CMFCRibbonButton, m_wndRibbonBar.FindByID(ID_TOOLS_BTN_VELOCITY));
pRibbonBtn->SetText(_T("Axis Speed Setting"));

pRibbonBtn = DYNAMIC_DOWNCAST(CMFCRibbonButton, m_wndRibbonBar.FindByID(ID_TOOLS_BTN_ETHERNET_CL));
pRibbonBtn->SetText(_T("Ethernet Client"));

pRibbonBtn = DYNAMIC_DOWNCAST(CMFCRibbonButton, m_wndRibbonBar.FindByID(ID_TOOLS_BTN_RECORD));
pRibbonBtn->SetText(_T("View Record"));

pRibbonBtn = DYNAMIC_DOWNCAST(CMFCRibbonButton, m_wndRibbonBar.FindByID(ID_TOOLS_BTN_CALITRAY));
pRibbonBtn->SetText(_T("Tray Calib"));

pRibbonBtn = DYNAMIC_DOWNCAST(CMFCRibbonButton, m_wndRibbonBar.FindByID(ID_TOOLS_BTN_TRAYPOINTS));
pRibbonBtn->SetText(_T("Tray Points"));

转载于:https://www.cnblogs.com/Asher-Wong/p/8125779.html

关于MFC中Ribbon界面如何修改标题属性问题相关推荐

  1. 修改MFC中AfxMessageBox()函数的对话框标题

    修改MFC中AfxMessageBox()函数的对话框标题 如何在MFC中修改AfxMessageBox()函数所弹出的对话框标题,步骤如下: 1.找到项目工程的资源视图,打开.rc资源文件下的Str ...

  2. 【MFC】Ribbon界面开发(一)

    01.目录 目录 01.目录 02.Ribbon介绍 03.创建第一个Ribbon界面 04.本文小结 02.Ribbon介绍 Ribbon界面就是微软从Office2007开始引入的一种为了使应用程 ...

  3. 【MFC】Ribbon界面开发(二)

    01.目录 目录 01.目录 02.本文内容 03.Ribbon实例 04.本文小结 02.本文内容 前面一节中为大家简单介绍了如何创建Ribbon样式的应用程序框架,本节就来初步聊聊怎样为Ribbo ...

  4. MFC中在界面上添加背景图片的方法

    在利用MFC做界面监控软件时,常常需要放一个漂亮的背景图片,本文基于VS2010版本,利用MFC自带的onPaint函数添加背景图片.步骤如下: 1.准备一张BMP格式的图片文件,将其保存在项目文件夹 ...

  5. MFC中访问界面控件的两种方法

    1.在资源中创建一个对话框资源,放置一些控件,然后使用类向导创建一个此对话框类型的变量,项目中会自动创建此对话框的.h和.cpp文件. 有两种方式可在代码中访问控件. (1)如果在代码中直接访问,则使 ...

  6. MFC的Ribbon界面按钮是灰色的问题解决办法

    问题描述 明明已经设置了按钮,按钮ID,编辑了按钮的类CRibbonIntegration,响应函数,但是按钮却显示灰色. 解决步骤 首先打开MainFrm.h文件,把自己的按钮类的头文件包含进来,然 ...

  7. React Native之react-navigation动态修改标题、页面导航等

    目录 1.navigation导航对象相关参数 1.1在当前Component获取navigation导航对象 1.2navigate方法 1.2.2使用示例 1.2.3源码 1.3params 1. ...

  8. java反射设置属性值_Java反射如何有效的修改final属性值详解

    前言 以前写过一篇 Java 反射修改 final 属性值,本文将在这里重新温习一下Java反射如何有效的修改final属性值,下面话不多说了,来一起看看详细的介绍: 假设有个类 class Pers ...

  9. fianl属性 java_Java反射如何有效的修改final属性值详解

    前言 以前写过一篇 Java 反射修改 final 属性值,本文将在这里重新温习一下Java反射如何有效的修改final属性值,下面话不多说了,来一起看看详细的介绍: 假设有个类 class Pers ...

最新文章

  1. mybatis 一对多_Springboot整合Mybatis实现级联一对多CRUD操作
  2. csv 字符串_爬虫|python读写csv文件的方法完成生涯规划表
  3. java反射泛型类型,【Java反射】Java 泛型基础
  4. 织梦(dedecms)当前位置{dede:field name='position' /}修改
  5. 通过Rancher Desktop在桌面上运行K8s
  6. 蓝图解锁怎么用_[UE4蓝图][Materials]虚幻4中可互动的雪地材质完整实现(一)
  7. 面试分享:那些年我经历过的一些面试,以及得到的一些面试心得!
  8. 可靠性测试设备技术含量_电气自动化控制设备的可靠性测试(1)
  9. ElasticSearch(1)CentOS安装ElasticSearch测试CRUD
  10. 针对IE 7的hack写法
  11. Linux系统下卸载jdk的步骤
  12. 记录php项目遇到502和504 Bad Gateway问题
  13. VS2008编译TrueCrypt
  14. Android Studio安装教程(保姆级超级详细)
  15. Java小游戏实操---大鱼吃小鱼 游戏开发
  16. 【fpdlink】FPDlink接口---TI954解串器功能分析
  17. Cordova打包Scratch为APP
  18. BC v1.2充电规范
  19. 安装vs2005 sp1 出现错误 1718
  20. vue3最全路由使用教程

热门文章

  1. win10系统下,数据库密码忘记
  2. Context context = getApplicationContext()
  3. 神经网络压缩库Distiller学习
  4. intel神经网络压缩库distiller使用时遇到的问题
  5. docker 镜像制作
  6. 谷歌优化效果怎么样?外贸如何做好谷歌SEO优化排名?
  7. apk包的破解与反编译
  8. 网络错误:windows无法访问\\,你没有权限访问\\
  9. Java 不赚钱,要转 Go 吗?
  10. 如何快速书写文件的相对路径和绝对路径