关于网友提出的“ MDI 修改了主框架菜单,打开子框架之后,菜单被刷新”问题疑问,本网通过在网上对“ MDI 修改了主框架菜单,打开子框架之后,菜单被刷新”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: MDI 修改了主框架菜单,打开子框架之后,菜单被刷新
解决方案1: 我就好人做到底吧。
Ctrl + Shift + X 打开ClassWizard,
类名找到CMainFrame,
在虚函数里添加OnUpdateFrameTitle
增加一行代码bAddToTitle = FALSE; 告诉框架,我不需要根据文档名来更改我的主框架标题!
void CMainFrame::OnUpdateFrameTitle(BOOL bAddToTitle)
{
// TODO: 在此添加专用代码和/或调用基类
bAddToTitle = FALSE;
CMDIFrameWndEx::OnUpdateFrameTitle(bAddToTitle);
}
其实不一定要用MFC自带的MDI框架的,自己弄一个还容易理解一些。
-
JavaScript html js页面刷新之后下拉菜单选中值不变,在按钮提交后保存下拉列表中值不变
解决方案2:
多语言还是要按资源文件做,把RC拷贝出来做DLL
解决方案3: 多文档是这样的!
它的title根据每个文档不同来刷新,这个设计非常不直观,也非常讨人嫌!
MFC多文档我觉得是封的比较烂的框架
解决方案4: 感觉当打开视图时会调用动态添加的文档视图类,你也在InitInstance()里设置好了菜单资源。但是看你有两个自定的MDI子框架,不知道会不会是这个问题?帮顶!
-
Cocos2D-X开发学习笔记-渲染框架之菜单类的使用示例
解决方案5:
关于中英文,我是这样做的,选择语言之前,直接刷新菜单的文字,如下:
m_wndMenuBar.SetButtonText(0, GetTranslationString(_T("4")));
m_wndMenuBar.SetButtonText(1, GetTranslationString(_T("5")));
而那些弹出的菜单,我是通过重载virtual BOOL OnShowPopupMenu(CMFCPopupMenu* pMenuPopup);来设置文字
BOOL CMainFrame::OnShowPopupMenu(CMFCPopupMenu* pMenuPopup)
{
if ((pMenuPopup != NULL) && !CMFCToolBar::IsCustomizeMode())
{
CMFCPopupMenuBar* pMenuBar = pMenuPopup->GetMenuBar();
CMFCToolBarMenuButton* pParentButton = pMenuPopup->GetParentButton();
if(pParentButton != NULL)
{
if(pParentButton->m_strText == GetTranslationString(_T("4")))
{
pMenuBar->SetButtonText(0, GetTranslationString(_T("8")));
}
else if(pParentButton->m_strText == GetTranslationString(_T("5")))
{
pMenuBar->SetButtonText(0, pGetTranslationString(_T("13")));
pMenuBar->SetButtonText(1, GetTranslationString(_T("14")));
}
else if(pParentButton->m_strText == GetTranslationString(_T("6")))
{
pMenuBar->SetButtonText(0, GetTranslationString(_T("22")));
}
}
}
return __super::OnShowPopupMenu(pMenuPopup);
}
GetTranslationString()你这个函数是自定义的吗?返回值是什么?
自定义的,根据语言类型返回字符串
-
MDI程序,添加多文档模板,点击New菜单项的时候弹出New对话框要求让用户选择的问题
解决方案6: 关于中英文,我是这样做的,选择语言之前,直接刷新菜单的文字,如下:
m_wndMenuBar.SetButtonText(0, GetTranslationString(_T("4")));
m_wndMenuBar.SetButtonText(1, GetTranslationString(_T("5")));
而那些弹出的菜单,我是通过重载virtual BOOL OnShowPopupMenu(CMFCPopupMenu* pMenuPopup);来设置文字
BOOL CMainFrame::OnShowPopupMenu(CMFCPopupMenu* pMenuPopup)
{
if ((pMenuPopup != NULL) && !CMFCToolBar::IsCustomizeMode())
{
CMFCPopupMenuBar* pMenuBar = pMenuPopup->GetMenuBar();
CMFCToolBarMenuButton* pParentButton = pMenuPopup->GetParentButton();
if(pParentButton != NULL)
{
if(pParentButton->m_strText == GetTranslationString(_T("4")))
{
pMenuBar->SetButtonText(0, GetTranslationString(_T("8")));
}
else if(pParentButton->m_strText == GetTranslationString(_T("5")))
{
pMenuBar->SetButtonText(0, pGetTranslationString(_T("13")));
pMenuBar->SetButtonText(1, GetTranslationString(_T("14")));
}
else if(pParentButton->m_strText == GetTranslationString(_T("6")))
{
pMenuBar->SetButtonText(0, GetTranslationString(_T("22")));
}
}
}
return __super::OnShowPopupMenu(pMenuPopup);
}
解决方案7: CMultiDocTemplate* pDocTemplate;
pDocTemplate = new CMultiDocTemplate(IDR_MAINFRAME,
RUNTIME_CLASS(CTouchPanelDoc),
RUNTIME_CLASS(CChildFrame), // 自定义 MDI 子框架
RUNTIME_CLASS(CTouchPanelView));
有两个菜单的,一个主菜单,一个子窗口菜单。
以上介绍了“ MDI 修改了主框架菜单,打开子框架之后,菜单被刷新”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/4533572.html