关于VS编译通过,运行时报错的问题,c++ dlgdata.cpp 中ASSERT(FALSE)处发生异常
2022/1/5 20:09:17
本文主要是介绍关于VS编译通过,运行时报错的问题,c++ dlgdata.cpp 中ASSERT(FALSE)处发生异常,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
总结:一般是控件绑定了变量,该控件被删除后,忘记在DoDataExchange中将其对应的DDX_语句删除。只要删除就OK了,最好resource里的资源ID也一起干掉。
我遇到的问题是:异常定位在dlgdata.cpp 中ASSERT(FALSE)处,解决方法:删除了资源视图中的控件,没有同步删除相应的变量与事件函数,DoDataExchange中还存在映射关系,把这些内容删除后,异常解决。
以下为其他博主内容,供大家参考。
近来在vc中遇到 dlgdata.cpp的问题,一般情况下,出现这种问题的原因:
1、在移植对话框的过程中,对话框中的控件的参数类型不正确
例如:本来为IDC_List,显示为1000
修改方法:就是把相应的类型改为 IDC_List
2、在ddx控制中出现的一些参数在dlg中没有 解决办法:删掉相应的参数
希望以上办法对大家有所帮助。
你的对话框中某个ID对应的控件不存在
估计你删除了界面上的控件,但是没有删除其映射关系
以下是出现断言错误的地方,Line43我已标出
HWND CDataExchange::PrepareCtrl(int nIDC)
{
ASSERT(nIDC != 0);
ASSERT(nIDC != -1); // not allowed
HWND hWndCtrl;
m_pDlgWnd-> GetDlgItem(nIDC, &hWndCtrl);
if (hWndCtrl == NULL)
{
TRACE1( "Error: no data exchange control with ID 0x%04X.\n ", nIDC);
*******Line43**** ASSERT(FALSE);
AfxThrowNotSupportedException();
}
m_hWndLastControl = hWndCtrl;
m_bEditLastControl = FALSE; // not an edit item by default
ASSERT(hWndCtrl != NULL); // never return NULL handle
return hWndCtrl;
}
没有找到这个相应控件类型
一般有三种情况:一是控件ID不存在,二是控件未创建,三是控件的类型不对
看看DoDataExchange函数
我遇到这中情况是 弹不出对话框 后来仔细查看是 控件ID和后面的数据 根本不匹配 也就是他们根本无法交换数据 所以遇到了上述错误 要缩小范围 一般情况下都是在【DoDateExchange】 中。 仔细查看控件ID是否正确。
参考链接:
这篇关于关于VS编译通过,运行时报错的问题,c++ dlgdata.cpp 中ASSERT(FALSE)处发生异常的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-27Rocket消息队列资料:新手入门指南
- 2024-11-27rocket消息队资料详解与入门指南
- 2024-11-27RocketMQ底层原理资料详解入门教程
- 2024-11-27RocketMQ项目开发资料:新手入门教程
- 2024-11-27RocketMQ项目开发资料详解
- 2024-11-27RocketMQ消息中间件资料入门教程
- 2024-11-27初学者指南:深入了解RocketMQ源码资料
- 2024-11-27Rocket消息队列学习入门指南
- 2024-11-26Rocket消息中间件教程:新手入门详解
- 2024-11-26RocketMQ项目开发教程:新手入门指南