c++ - 第二个对话框上的 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);
}
解决方案
@andrew-truckle,你的侧节点就是答案!我将其更改为:
void CMFCApplication1Dlg::OnBnClickedButton1()
{
SettingsDlg settingsDialog;
settingsDialog.DoModal();
}
现在按钮按预期工作。非常感谢!
更多信息(来自@andrew-truckle)
为了其他人的利益,这里的问题是原始代码声明了这样的对话框:
CDialogEx secondDialog(IDD_DIALOG1);
这是错误的,因为对话框实际上与类相关联SettingsDlg
。这是具有消息映射和事件处理程序等CDialogEx
的类是基类。
我将此更新添加到答案中,以使读者免于查找我对问题的评论。
推荐阅读
- android - Google 文字转语音的 API 密钥在哪里?
- reactjs - 如何从类组件中导出和导入函数
- ruby-on-rails - 如何将 CoreUI 添加到 rails (+ React) 应用程序?
- javascript - 防止重复的对象被添加到数组中?
- java - java netbeans IDE 8.2中的扫描仪导入问题
- reactjs - 在 ReactJS 中多次 setState 后捕获状态值
- python-3.x - 如何以简单的方式进行累积平均值和计数
- wordpress - 如何传递链接的跟踪 ID 并将它们添加到 wordpress 页面上的出站链接
- mysql - MYSQL - 无法创建外部密钥
- unity3d - 字符串构造函数不能在统一 c# 中工作