在类构造函数中使用 MFC 按钮控件 EnableWindow 方法时“调试断言失败”
Posted
技术标签:
【中文标题】在类构造函数中使用 MFC 按钮控件 EnableWindow 方法时“调试断言失败”【英文标题】:"Debug Assertion Failed" when MFC button control EnableWindow method is used in class constructor 【发布时间】:2020-05-07 01:44:45 【问题描述】:我正在使用 Visual Studio 2019 并构建 C++ 桌面应用程序。我有一个从 CDialogEx 继承的对话框类。在这个类中,我有几个按钮,即 CButton 作为成员。 当我在类构造函数中使用 EnableWindow 方法时,它会报告:
调试断言失败!程序 C:\WINDOWS\SYSTEM32\mfc140ud.dll 文件: d....\winocc.cpp 第 345 行
如果我将其注释掉,则应用程序运行良好。知道为什么我有这个错误吗?我想做的就是在对话框出现后立即禁用按钮 - 这就是我在构造函数中使用此方法的原因。
【问题讨论】:
【参考方案1】:C++ 类与对话窗口及其控件的实际创建是有区别的。
构造函数用于类相关项,而不是窗口相关项。例如,如果你想初始化成员变量,那么构造函数就是它的地方。但是在构建时,没有创建对话窗口,因此不存在子控件,因此您看到了错误。
您可以假设创建窗口的位置在对话框的OnInitDialog 成员函数中。这是您应该能够在控件上调用EnableWindow
的地方。
如果您没有OnInitDialog
,您可以使用类向导添加该函数。
【讨论】:
以上是关于在类构造函数中使用 MFC 按钮控件 EnableWindow 方法时“调试断言失败”的主要内容,如果未能解决你的问题,请参考以下文章