MDI 架构的菜单切换实现

Elysium 2006-08-18 09:48:35
一个MDI工程有多个视图类,每个视图类对应一项菜单控制,如果该类没有显示,则对应菜单栏及其下菜单项也不显示,若视图显示,则显示对应菜单栏/工具栏,需要执行哪些步骤,如何实现?
...全文
356 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
SilveryFox 2006-09-02
  • 打赏
  • 举报
回复
似乎更符合需要
SilveryFox 2006-09-02
  • 打赏
  • 举报
回复
补充一下:
在CodeProject搜到了另一篇帖子
Automatic toolbar selection in MDI applications:

http://www.codeproject.com/docview/afautotoolbar.asp
Elysium 2006-08-22
  • 打赏
  • 举报
回复
可以了,vc.net的
Elysium 2006-08-22
  • 打赏
  • 举报
回复
例子无法下载
Elysium 2006-08-22
  • 打赏
  • 举报
回复
看看去
蒋晟 2006-08-19
  • 打赏
  • 举报
回复
www.codeproject.com/docview/MultiViewsMFC_MDI.asp
jerry 2006-08-18
  • 打赏
  • 举报
回复
没有对应的文档模版类,那么就在OnActiveView中将你指定的菜单设置到主框架窗口。
AfxGetMainWnd()->SetMenu(m_menu);
m_menu可以是相应视图的静态成员。你在InitInstance里依次加载每种视图的菜单也就是了。
Elysium 2006-08-18
  • 打赏
  • 举报
回复
有的视图没有对应的文档模版类,怎么创建?
raymonzhao 2006-08-18
  • 打赏
  • 举报
回复
边城浪子正解,我觉得菜单资源的动态变化也可以放在OnActiveView中来实现.
cleverwyq 2006-08-18
  • 打赏
  • 举报
回复
IDR_SHEETTYPE AND IDR_NOTETYPE 等是不同视图对应的菜单id
cleverwyq 2006-08-18
  • 打赏
  • 举报
回复
BOOL CMyApp::InitInstance()
{
// ...
// Establish all of the document types
// supported by the application

AddDocTemplate( new CMultiDocTemplate( IDR_SHEETTYPE,
RUNTIME_CLASS( CSheetDoc ),
RUNTIME_CLASS( CMDIChildWnd ),
RUNTIME_CLASS( CSheetView ) ) );

AddDocTemplate( new CMultiDocTemplate( IDR_NOTETYPE,
RUNTIME_CLASS( CNoteDoc ),
RUNTIME_CLASS( CMDIChildWnd ),
RUNTIME_CLASS( CNoteView ) ) );
// ...
}
jerry 2006-08-18
  • 打赏
  • 举报
回复
为每一种视图创建文档模板时,指定的那个资源ID。这个ID如果有对应的菜单资源,则当视图切换到该视图时相应的菜单会被加载到主框架。工具栏,没有这样的自动切换机制。但你可以重载OnActivateView来显示和隐藏相应的工具栏
Elysium 2006-08-18
  • 打赏
  • 举报
回复
沉的好快

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧