新建一个MFC单文档程序含有菜单和工具栏,又建了一个对话框,如何直接显示对话框?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了新建一个MFC单文档程序含有菜单和工具栏,又建了一个对话框,如何直接显示对话框?相关的知识,希望对你有一定的参考价值。

工具栏很好去掉,在主框架cmainframe的oncreate函数中,注销m_wndtoolbar等相关的创建和绑定代码即可。
菜单不是很好弄。
如果是vs2005之后的新样式菜单,那么在oncreate中就可以了,方法和工具栏相同。
如果是vc6或者新版本中选择的老式菜单,这个是绑定在模板创建中的,不能直接去掉。不过同样可以在主框架的oncreate中,通过m_pmainwnd->setmenu(null);这样的调用,去除主菜单。
参考技术A 有组合框的对话框假设A,单文档工程假设B
如果你通过B向A中添加条目就需要设置public的全局变量。
如果你通过A直接给组合框添加条目,在对话框的类cpp里添加就行了。
A中假设有个按钮给组合框加条目的话,给按钮一个消息。给组合框一个消息,有触发么?
或者你直接给对话框A的初始化函数给组合框添加条目也行本回答被提问者采纳

更新工具栏按钮状态 MFC

【中文标题】更新工具栏按钮状态 MFC【英文标题】:Updating toolbar button state MFC 【发布时间】:2012-07-06 07:36:03 【问题描述】:

我在 MFC 应用程序中有一个对话框,它有菜单栏。现在,我使用菜单栏中的相同命令 ID 在该对话框中创建了一个工具栏。

我用来更新菜单项的状态,并根据ON_UPDATE_COMMAND_UI 中的某些检查使其启用/禁用,当我单击菜单时。但是对于工具栏,我没有收到这些调用来更新它的状态,如果它应该被启用/禁用。

此外,当测试失败并且我禁用该项目时,我没有任何通知。

有没有其他方法可以做到这一点?

谢谢

只有当我点击工具栏按钮时才会调用ON_UPDATE_COMMAND_UI

【问题讨论】:

【参考方案1】:

在对话框中使用 MFC 可能会令人沮丧。

我建议您在将状态更改为将启用/禁用菜单的变量时直接禁用工具栏按钮:

void CtestDlg::OnBnClickedButton_DisableSomeControls()

command_menu_1 = !command_menu_1;
m_ToolBar.GetToolBarCtrl().EnableButton(ID_COMMAND_TEST, command_menu_1);

不是很优雅,但是很管用!

【讨论】:

这对我来说感觉一样。即使在我的情况下,对话框也是无模式的,所以即使我也无法使用 KICKIDLE 来做到这一点,因为这是我第一次使用空闲时间的东西。此外,它是一个遗留代码,不仅有一个变量的更新禁用/启用工具栏的按钮,而且还有很多检查。

以上是关于新建一个MFC单文档程序含有菜单和工具栏,又建了一个对话框,如何直接显示对话框?的主要内容,如果未能解决你的问题,请参考以下文章

MFC技巧三:VC6 单文档 替换MFC默认的菜单栏和工具栏(转)

MFC应用程序类型

mfc 单文档 多文档 对话框 区别

单文档的MFC程序,怎样为工具栏按钮添加图标

MFC 单文档添加自定义位图工具栏图标

解决一个MFC程序的工具栏背景为黑的问题