【问题标题】:How do I handle toolbar messages in a dialog box如何处理对话框中的工具栏消息
【发布时间】:2018-05-04 17:43:50
【问题描述】:

我正在使用 Visual Studio 2017 从向导开始编写 MFC MDI 应用程序。在此应用程序中,我有带有工具栏的对话框。但是当显示对话框时,工具栏按钮不会启用,即使对话框类包含按钮 ID 的处理程序。

例如,我为一个名为 CDlg 的对话框创建了 1 个测试类,其中工具栏带有一个 ID 为 ID_DIALOG_1 的按钮。我在 CDlg 中有相应的消息映射条目和相应的处理函数:

BEGIN_MESSAGE_MAP(CDlg, CDialogEx)
    ON_COMMAND(ID_DIALOG_1, &CDlg::OnDialog1)
END_MESSAGE_MAP()

void CDlg::ODialog1()
{
    // TODO: Add your command handler code here
}

但是工具栏按钮被禁用了。

我尝试将处理程序放在文档类和 CDlg 中,在这种情况下,启用按钮并调用 CDlg::OnDialog1 处理程序。我还尝试在 ID_DIALOG_1 的 CDlg 类上放置一个菜单,在这种情况下,当单击菜单项但工具栏按钮仍处于禁用状态时,会调用 CDlg::OnDialog1。

那么,是否可以在工具栏的 CDlg 类中包含按钮 ID ID_DIALOG_1 的命令处理程序?

【问题讨论】:

标签: mfc dialog toolbar


【解决方案1】:

我的代码中有一个错误。我在创建和加载工具栏后调用CDialogEx::OnInitDialog(),但实际上应该根据link调用CDialogEx::OnInitDialog()

【讨论】:

    猜你喜欢
    • 2014-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-12
    • 1970-01-01
    • 2017-02-18
    • 1970-01-01
    • 2013-09-15
    相关资源
    最近更新 更多