【发布时间】:2021-03-01 15:33:27
【问题描述】:
我使用 Visual Studio 向导创建了一个 C++ MFC 程序。在那里我将应用程序类型设置为“基于对话框”。
我在第一个对话框上有一个按钮,可以打开另一个对话框。我通过右键单击项目 -> 添加 -> 资源 -> 对话框 -> 新建来创建第二个对话框。 然后我通过在资源视图中双击它来将 MFC 类添加到新对话框中。
在 second 对话框中,我还创建了一个按钮。我双击按钮并添加了一些应该执行的代码。
当我运行程序并单击第二个对话框上的按钮时,什么也没有发生,代码也没有执行。我用第一个对话框上的按钮做了所有的事情。那个很好用。为什么第二个按钮不起作用,我需要做什么?
第一个对话框
void CMFCApplication1Dlg::OnBnClickedButton1()
{
CDialogEx secondDialog(IDD_DIALOG1);
secondDialog.DoModal();
}
第二个对话框
void SettingsDlg::OnBnClickedButton1()
{
MessageBox(L"Button clicked", L"Button clicked", MB_OK);
}
【问题讨论】:
-
必读:Message Maps (MFC)。这不仅解释了如何正确地做到这一点,而且使您能够理解所提供的代码不足以回答问题。
-
双击对话框资源上的控件是创建单击事件处理程序的完全可接受的方式,系统应添加所有锅炉位置代码。确保您的消息映射条目也存在(在类文件中较高)。
-
旁注:您将变量声明为
CDialogEx,而您的对话框实际上是SettingsDlg类(很可能派生自CDialogEx)。那么为什么不将您的变量声明为正确的对象类型...?
标签: c++ winapi button mfc dialog