MDI 修改了主框架菜单,打开子框架之后,菜单被刷新_VC/MFC_编程问答

MDI 修改了主框架菜单,打开子框架之后,菜单被刷新

来源:互联网  时间:2018/1/23 13:31:54

关于网友提出的“ 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:

引用 7 楼 cvbtvbwu 的回复:
Quote: 引用 6 楼 yyb520a 的回复:

Quote: 引用 5 楼 cvbtvbwu 的回复:

关于中英文,我是这样做的,选择语言之前,直接刷新菜单的文字,如下:
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()你这个函数是自定义的吗?返回值是什么?

自定义的,根据语言类型返回字符串

多语言还是要按资源文件做,把RC拷贝出来做DLL

  • 【PB】pb菜单详解和MDI

解决方案3:

多文档是这样的!
它的title根据每个文档不同来刷新,这个设计非常不直观,也非常讨人嫌!
MFC多文档我觉得是封的比较烂的框架

  • Android滑动菜单框架Demo修正版

解决方案4:

感觉当打开视图时会调用动态添加的文档视图类,你也在InitInstance()里设置好了菜单资源。但是看你有两个自定的MDI子框架,不知道会不会是这个问题?帮顶!

  • Cocos2D-X开发学习笔记-渲染框架之菜单类的使用示例

解决方案5:

引用 6 楼 yyb520a 的回复:
Quote: 引用 5 楼 cvbtvbwu 的回复:

关于中英文,我是这样做的,选择语言之前,直接刷新菜单的文字,如下:
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);
}


  • LCD菜单设计框架

解决方案7:

CMultiDocTemplate* pDocTemplate;
pDocTemplate = new CMultiDocTemplate(IDR_MAINFRAME,
RUNTIME_CLASS(CTouchPanelDoc),
RUNTIME_CLASS(CChildFrame), // 自定义 MDI 子框架
RUNTIME_CLASS(CTouchPanelView));
有两个菜单的,一个主菜单,一个子窗口菜单。

  • 前端框架 zTree 从数据库中动态加载树形菜单

上一篇ListCtrl控件表头如何合并
下一篇:没有了
明星图片
相关文章
《 MDI 修改了主框架菜单,打开子框架之后,菜单被刷新》由码蚁之家搜集整理于网络,
联系邮箱:mxgf168#qq.com(#改为@)