关于修改MFC Ribbon Panel标题的总结m_strNamem_strName
来源:互联网 发布:chrome 抢票插件 mac 编辑:程序博客网 时间:2024/06/05 07:36
在项目中遇到要修改ribbon panel的标题为别的语言,可是在MSDN上查找发现CMFCRibbonPanel这个类下没有修改caption的函数,而且ribbon panel没有自带ID,困扰许久,看到一篇帖子说用修改自带变量的方法可行。具体看了一下,因为CMFCRibbonPanel有个GetName()函数,则得到的字符串一定在某个变量存储,寻找源头发现标题caption在m_strName这个变量中保存,遂定义一个CMFCRibbonPanel的子类,来通过对子类中m_strName的修改达到改变Panel标题的目的。代码如下,先声明一个子类
class MyRibbonPanel:public CMFCRibbonPanel{public:MyRibbonPanel();~MyRibbonPanel();// MyRibbonPanel(LPCTSTR lpszName = NULL, HICON hIcon = NULL ) : CMFCRibbonPanel(lpszName, hIcon) {}; void SetPanelName(CString name);};再对这个子类的setpanelname函数进行定义,这里的定义一定不要放在头文件里,因为我刚刚开始编程没有经验,经常把定义放在头文件,这样头文件被多个cpp调用时就会出现多次定义等问题。
void MyRibbonPanel::SetPanelName(CString name){m_strName=name;}
然后就可以调用了
CMFCRibbonPanel* pPanel;MyRibbonPanel* pMyPanel = (MyRibbonPanel*)pPanel;//这里把父类的对象强制转换成子类对象,没有报错,说明可以转换pMyPanel->SetPanelName(“it can work ”);还有一个发现如下
static TCHAR gRibbonString[RIBBON_SIZE];CString SName=gRibbonString;//CString和CHar大概可以相互转换?
这里做一下总结:
1.函数或者变量的定义不要放在头文件中
2.基类的对象可以强制转化为子类的对象(搜索后发现父类向子类转换需要加上这个dynamic_cast,不过我没加也并没有报错)
3.通过这个实例发现,通过子类改变基类中定义的变量时,变化的就是基类中本身的而不是子类继承来的(可能加了Virture情况就不一样)
1 0
- 关于修改MFC Ribbon Panel标题的总结m_strNamem_strName
- vs2010/MFC Ribbon风格修改窗体标题
- 动态修改Ribbon风格窗口标题的做法
- 修改MFC窗口的标题
- MFC修改AfxMessageBox的标题
- 修改MFC应用程序的标题
- 如何修改MFC中的AFxMessageBox的标题
- MFC修改主窗口的标题
- MFC 如何修改窗口的标题CFrameWnd
- MFC 动态修改对话框的标题
- MFC中修改对话框的标题
- 如何修改MFC对话框的窗口标题
- MFC标题和文字的修改
- MFC的Ribbon开发设计
- 修改MFC默认标题
- MFC修改标题
- 修改MFC程序标题
- MFC修改标题
- Java 注意事项
- 彻底删除nginx
- 卡尔曼滤波器学习笔记(上)
- Android中关于Drawable
- 记录一些在Ubuntu16.04的一些问题
- 关于修改MFC Ribbon Panel标题的总结m_strNamem_strName
- 从上至下的学习计
- 【第一次发博客,写的不好见谅】git学习【基本】!!
- android蓝牙hfp client使用例
- Erlang字符串格式化
- ms
- SharedPreferences实现登录界面记住密码
- Eddy的难题 oj
- 新生儿吸入胎粪的危害有哪些