保卫处网站建设,雷山网站快速排名,网站后台如何更改,企业建站系统漏洞简介
最近在搞一个老外的项目#xff0c;本来谈的好好的#xff0c;纯英文界面。项目接近尾声了#xff0c;又提出了中英文实时切换的新需求#xff0c;没办法就只能想办法#xff0c;毕竟客户最大嘛。
实现方法
还好本来的ribbon英文菜单不复杂#xff0c;就用纯C编码…简介
最近在搞一个老外的项目本来谈的好好的纯英文界面。项目接近尾声了又提出了中英文实时切换的新需求没办法就只能想办法毕竟客户最大嘛。
实现方法
还好本来的ribbon英文菜单不复杂就用纯C编码的方式实现了中英文切换。方法如下 1添加一个ribbon分类取名为Language 2) 在Language分类里添加一个Panel, 在Panel里添加一个Button, Button的名称为Chinese。 3) 为Chinese按钮添加消息响应函数。 4) 接下来就是在响应函数里编写切换的内容了。
Ribbon资源图 Chinese按钮属性 添加消息响应函数 编程实现中英文切换
void CMainFrame::OnLanguage()
{//新添加的Languae在第5个分类栏所以GetCategory(5)//Panel就一个所以GetPanel(0)//按钮就一个所以GetElement(0)//获取按钮上的文本判断是Chinese还是“中文”CString str m_wndRibbonBar.GetCategory(5)-GetPanel(0)-GetElement(0)-GetText();if (str Chinese) {if (IsValidCodePage(2052)) {MessageBox(The language Chinese Simplified PRC is not supported in this system.);return;}theApp.m_Lang 2052;m_wndRibbonBar.GetCategory(0)-SetName(中文分类0);m_wndRibbonBar.GetCategory(0)-GetPanel(0)-GetElement(0)-SetText(按钮001);m_wndRibbonBar.GetCategory(1)-SetName(中文分类1);m_wndRibbonBar.GetCategory(1)-GetPanel(0)-GetElement(0)-SetText(按钮111);m_wndRibbonBar.GetCategory(1)-GetPanel(0)-GetElement(2)-SetText(按钮112);m_wndRibbonBar.GetCategory(1)-GetPanel(0)-GetElement(4)-SetText(按钮113);m_wndRibbonBar.GetCategory(1)-GetPanel(1)-GetElement(0)-SetText(按钮121);m_wndRibbonBar.GetCategory(1)-GetPanel(2)-GetElement(0)-SetText(检查框131);m_wndRibbonBar.GetCategory(1)-GetPanel(2)-GetElement(2)-SetText(检查框132);m_wndRibbonBar.GetCategory(2)-SetName(中文分类2);m_wndRibbonBar.GetCategory(2)-GetPanel(0)-GetElement(0)-SetText(按钮211);m_wndRibbonBar.GetCategory(2)-GetPanel(0)-GetElement(2)-SetText(按钮212);m_wndRibbonBar.GetCategory(2)-GetPanel(0)-GetElement(4)-SetText(按钮213);m_wndRibbonBar.GetCategory(3)-SetName(中文分类3);m_wndRibbonBar.GetCategory(3)-GetPanel(0)-GetElement(0)-SetText(按钮311);m_wndRibbonBar.GetCategory(3)-GetPanel(0)-GetElement(2)-SetText(按钮312);m_wndRibbonBar.GetCategory(4)-SetName(中文分类4);m_wndRibbonBar.GetCategory(4)-GetPanel(0)-GetElement(0)-SetText(按钮411);m_wndRibbonBar.GetCategory(5)-SetName(语言);m_wndRibbonBar.GetCategory(5)-GetPanel(0)-GetElement(0)-SetText(英文);}else {if (IsValidCodePage(1033)) {MessageBox(英文启动不支持系统不能识别英文.);return;}theApp.m_Lang 1033;m_wndRibbonBar.GetCategory(0)-SetName(Category0);m_wndRibbonBar.GetCategory(0)-GetPanel(0)-GetElement(0)-SetText(Button001);m_wndRibbonBar.GetCategory(1)-SetName(Category1);m_wndRibbonBar.GetCategory(1)-GetPanel(0)-GetElement(0)-SetText(Button111);m_wndRibbonBar.GetCategory(1)-GetPanel(0)-GetElement(2)-SetText(Button112);m_wndRibbonBar.GetCategory(1)-GetPanel(0)-GetElement(4)-SetText(Button113);m_wndRibbonBar.GetCategory(1)-GetPanel(1)-GetElement(0)-SetText(Button121);m_wndRibbonBar.GetCategory(1)-GetPanel(2)-GetElement(0)-SetText(Checkbox131);m_wndRibbonBar.GetCategory(1)-GetPanel(2)-GetElement(2)-SetText(Checkbox132);m_wndRibbonBar.GetCategory(2)-SetName(Category2);m_wndRibbonBar.GetCategory(2)-GetPanel(0)-GetElement(0)-SetText(Button211);m_wndRibbonBar.GetCategory(2)-GetPanel(0)-GetElement(2)-SetText(Button212);m_wndRibbonBar.GetCategory(2)-GetPanel(0)-GetElement(4)-SetText(Button213);m_wndRibbonBar.GetCategory(3)-SetName(Category3);m_wndRibbonBar.GetCategory(3)-GetPanel(0)-GetElement(0)-SetText(Button311);m_wndRibbonBar.GetCategory(3)-GetPanel(0)-GetElement(2)-SetText(Button312);m_wndRibbonBar.GetCategory(4)-SetName(Category4);m_wndRibbonBar.GetCategory(4)-GetPanel(0)-GetElement(0)-SetText(Button411);m_wndRibbonBar.GetCategory(5)-SetName(Language);m_wndRibbonBar.GetCategory(5)-GetPanel(0)-GetElement(0)-SetText(Chinese);}//这两行一定要加否则ribbon不会重新计算位置和重画。m_wndRibbonBar.ForceRecalcLayout();m_wndRibbonBar.RedrawWindow();
}注意事项
在上面的代码中可以看到有写panel里面获取element时并不是0,1,2那样紧挨着获取的Element而是0,2,4这样获取的Element。
那是因为Panel里面除了按钮之外还有Seperator就是分割线他们是一种没有文本的分割线。所以要跳过分割线。小结
这种通过硬编码的方式修改Ribbon界面的方式比较笨但是好在确实十分有效。目前我的项目已经在客户那里验证通过了也算没白费。