第二个对话框上的 C++ MFC 按钮什么都不做

C++ MFC Button on a second Dialog does nothing

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

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

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

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

第一次对话

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

第二次对话

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

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

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

现在按钮可以正常使用了。非常感谢!


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

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

CDialogEx secondDialog(IDD_DIALOG1);

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

我将此更新添加到答案中以节省 reader 从定位我对问题的评论。