mfc 多文档中怎样动态添加菜单项?

mfc 多文档中怎样动态添加菜单项?,第1张

pDocTemplate = new CSingleDocTemplate(

IDR_MAINFRAME,

RUNTIME_CLASS(CMyScrollViewDoc),

RUNTIME_CLASS(CMainFrame), // 主 SDI 框架窗口

RUNTIME_CLASS(CMyScrollViewView))这个函数将文档类视类和框架类结合在一起,这个是单文档的组织形式,所以在单文档中框架类始终没有改变,所以可以动态加载菜单

pDocTemplate = new CMultiDocTemplate(IDR_questionTYPE,

RUNTIME_CLASS(CquestionDoc),

RUNTIME_CLASS(CChildFrame), // 自定义 MDI 子框架

RUNTIME_CLASS(CquestionView))而这个是多文档的组织形式,可以看到第三个参数变成了CChildFrame,而不是CMainFrame,第一个参数也有所改变看,所以每新建一个多文档就会对应一个CChildFrame,所以动态添加的菜单不会显示在CMainFrame上,多文档不共用框架类

1、先在资源视图下选择添加资源,选择菜单,然后在对话框的属性栏,选择Menu(会有你添加菜单的ID)即可。

2、先在资源视图下选择添加资源,选择菜单

CMenu

m_menu

m_menu.loadMenu(你添加菜单资源的ID);

SetMenu(&m_menu)

VS2010的MFC对话框程序中添加菜单栏的过程,我大致分了这五步。

一、将Menu加入Resource视图中

在WorkSpace中的Resource视图下,在任意一个文件夹图标上,右击选择Insert(插入)选项,在d出的对话框中选择Menu以后,再点击,new按钮,菜单就会添加成功了,但是现在还没有完成,还不能进行编译,因为现在的菜单时空的,在编译的时候会被清除的。

二、用菜单编辑器添加菜单栏及菜单项

菜单添加成功后,菜单编辑器自动打开,可以在其中添加菜单栏及菜单项,比较简单。

三、将菜单加载到你的对话框

第一步中添加一个菜单项,这是菜单就真正的加到了你的工程中了,接下来就是如何将菜单加载到你的对话框中了。

打开你新加入的菜单项,单击“项目”-->“添加现有项”,在这里选择已有的类,就是你要为其添加菜单的对话框的类,例如,***Dlg.cpp。然后确定。

四、在相应的文件中添加代码

打开对话框头文件***Dlg.h,声明CMenu 变量,例如m_Menu

打开***Dlg.cpp 文件,在***Dlg::OnInitDlg()中加入如下语句:

m_Menu.LoadMenu(IDR_MENU1) // IDR_MENU1为你加入的菜单的ID,在Resource视图的Menu文件夹下可以找到

SetMenu(&m_Menu)

这样就OK了,调试一下,菜单就已经出现在对应的对话框中。

五、利用向导生成菜单消息响应函数

选择项目下的类向导,选择类名为”***Dlg.cpp”,在“命令”选项卡下的“对象ID(B)”中,选择各子菜单项的对应的ID,然后在“消息(S)”中双击COMMAND消息。

这时会d出对话框类,你可以更改对应子菜单项的函数处理名,然后点击确定。菜单消息响应函数生成完毕,加入你需要的代码。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11739355.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-18
下一篇2023-05-18

发表评论

登录后才能评论

评论列表(0条)

    保存