我正在编写一个MFC MDI应用程序,我从向导开始,使用visual studio 2017.在这个应用程序中,我有带工具栏的对话框。但是当显示对话框时,即使对话框类包含按钮ID的处理程序,也不会启用工具栏按钮。
例如,我为一个名为CDlg的对话框创建了一个测试类,其中包含一个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 ID_DIALOG_1在CDlg类上放置一个菜单,在这种情况下,单击菜单项但是工具栏按钮仍然处于禁用状态时,将调用CDlg :: OnDialog1。
那么,是否可以在工具栏的类CDlg中使用按钮ID ID_DIALOG_1的命令处理程序?
答案 0 :(得分:0)
我的代码中存在错误。我在创建和加载工具栏后调用了CDialogEx::OnInitDialog()
,但实际上CDialogEx::OnInitDialog()
应该首先根据link调用。