首页 > 解决方案 > 第二个对话框上的 C++ MFC 按钮什么也不做

问题描述

我使用 Visual Studio 向导创建了一个 C++ MFC 程序。在那里,我将应用程序类型设置为“基于对话框”。

我在第一个对话框上有一个按钮,它会打开另一个对话框。我通过右键单击项目 -> 添加 -> 资源 -> 对话框 -> 新建来创建第二个对话框。然后我通过在资源视图中双击它来将 MFC 类添加到新对话框中。

第二个对话框中,我还创建了一个按钮。我双击按钮并添加了一些应该执行的代码。

当我运行程序并单击第二个对话框上的按钮时,什么也没有发生,代码也没有执行。我用第一个对话框上的按钮做了所有的事情。那个很好用。为什么第二个按钮不起作用,我需要做什么?

第一个对话框

void CMFCApplication1Dlg::OnBnClickedButton1()
{
    CDialogEx secondDialog(IDD_DIALOG1);
    secondDialog.DoModal();
}

第二个对话框

void SettingsDlg::OnBnClickedButton1()
{
    MessageBox(L"Button clicked", L"Button clicked", MB_OK);
}

标签: c++winapibuttonmfcdialog

解决方案


@andrew-truckle,你的侧节点就是答案!我将其更改为:

void CMFCApplication1Dlg::OnBnClickedButton1()
{
    SettingsDlg settingsDialog;
    
    settingsDialog.DoModal();
}

现在按钮按预期工作。非常感谢!


更多信息(来自@andrew-truckle)

为了其他人的利益,这里的问题是原始代码声明了这样的对话框:

CDialogEx secondDialog(IDD_DIALOG1);

这是错误的,因为对话框实际上与类相关联SettingsDlg。这是具有消息映射和事件处理程序等CDialogEx的类是类。

我将此更新添加到答案中,以使读者免于查找我对问题的评论。


推荐阅读