关于MFC中Ribbon界面如何修改标题属性问题
最近在工作中,遇到了需要将软件从中文转成英文的问题。通常来说,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界面如何修改标题属性问题相关推荐
- 修改MFC中AfxMessageBox()函数的对话框标题
修改MFC中AfxMessageBox()函数的对话框标题 如何在MFC中修改AfxMessageBox()函数所弹出的对话框标题,步骤如下: 1.找到项目工程的资源视图,打开.rc资源文件下的Str ...
- 【MFC】Ribbon界面开发(一)
01.目录 目录 01.目录 02.Ribbon介绍 03.创建第一个Ribbon界面 04.本文小结 02.Ribbon介绍 Ribbon界面就是微软从Office2007开始引入的一种为了使应用程 ...
- 【MFC】Ribbon界面开发(二)
01.目录 目录 01.目录 02.本文内容 03.Ribbon实例 04.本文小结 02.本文内容 前面一节中为大家简单介绍了如何创建Ribbon样式的应用程序框架,本节就来初步聊聊怎样为Ribbo ...
- MFC中在界面上添加背景图片的方法
在利用MFC做界面监控软件时,常常需要放一个漂亮的背景图片,本文基于VS2010版本,利用MFC自带的onPaint函数添加背景图片.步骤如下: 1.准备一张BMP格式的图片文件,将其保存在项目文件夹 ...
- MFC中访问界面控件的两种方法
1.在资源中创建一个对话框资源,放置一些控件,然后使用类向导创建一个此对话框类型的变量,项目中会自动创建此对话框的.h和.cpp文件. 有两种方式可在代码中访问控件. (1)如果在代码中直接访问,则使 ...
- MFC的Ribbon界面按钮是灰色的问题解决办法
问题描述 明明已经设置了按钮,按钮ID,编辑了按钮的类CRibbonIntegration,响应函数,但是按钮却显示灰色. 解决步骤 首先打开MainFrm.h文件,把自己的按钮类的头文件包含进来,然 ...
- React Native之react-navigation动态修改标题、页面导航等
目录 1.navigation导航对象相关参数 1.1在当前Component获取navigation导航对象 1.2navigate方法 1.2.2使用示例 1.2.3源码 1.3params 1. ...
- java反射设置属性值_Java反射如何有效的修改final属性值详解
前言 以前写过一篇 Java 反射修改 final 属性值,本文将在这里重新温习一下Java反射如何有效的修改final属性值,下面话不多说了,来一起看看详细的介绍: 假设有个类 class Pers ...
- fianl属性 java_Java反射如何有效的修改final属性值详解
前言 以前写过一篇 Java 反射修改 final 属性值,本文将在这里重新温习一下Java反射如何有效的修改final属性值,下面话不多说了,来一起看看详细的介绍: 假设有个类 class Pers ...
最新文章
- mybatis 一对多_Springboot整合Mybatis实现级联一对多CRUD操作
- csv 字符串_爬虫|python读写csv文件的方法完成生涯规划表
- java反射泛型类型,【Java反射】Java 泛型基础
- 织梦(dedecms)当前位置{dede:field name='position' /}修改
- 通过Rancher Desktop在桌面上运行K8s
- 蓝图解锁怎么用_[UE4蓝图][Materials]虚幻4中可互动的雪地材质完整实现(一)
- 面试分享:那些年我经历过的一些面试,以及得到的一些面试心得!
- 可靠性测试设备技术含量_电气自动化控制设备的可靠性测试(1)
- ElasticSearch(1)CentOS安装ElasticSearch测试CRUD
- 针对IE 7的hack写法
- Linux系统下卸载jdk的步骤
- 记录php项目遇到502和504 Bad Gateway问题
- VS2008编译TrueCrypt
- Android Studio安装教程(保姆级超级详细)
- Java小游戏实操---大鱼吃小鱼 游戏开发
- 【fpdlink】FPDlink接口---TI954解串器功能分析
- Cordova打包Scratch为APP
- BC v1.2充电规范
- 安装vs2005 sp1 出现错误 1718
- vue3最全路由使用教程