第二个对话框上的 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。CDialogEx
是 base class.
我将此更新添加到答案中以节省 reader 从定位我对问题的评论。
我使用 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。CDialogEx
是 base class.
我将此更新添加到答案中以节省 reader 从定位我对问题的评论。