【发布时间】: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 的命令处理程序?
【问题讨论】:
-
我已经知道我的问题的答案是肯定的!我的代码中有一个错误。我在创建工具栏后调用了 CDialogEx::OnInitDialog(),但是根据link 应该首先调用 CDialogEx::OnInitDialog()