新年问个问题

时间:2021-08-11 19:39:12
程序错误 :for information on how your program can cause an assertion failure,see the visual c++ documentation on asserts

好像是说我的程序可能会导致断言失败的信息。


具体操作如下:在mfc 的Dlg类的头文件中 这个位置定义了一个 CStatic m_pot
  // Dialog Data
//{{AFX_DATA(CDemoDlg)
enum { IDD = IDD_DEMO_DIALOG };
// NOTE: the ClassWizard will add data members here
CStatic m_pot;
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CDemoDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support

//}}AFX_VIRTUAL
然后 在 cpp 中的 DoDataExchange 函数中 消息映射 DDX_Control(pDX, IDC_BU_UPANDDOWN, m_pot);

   IDC_BU_UPANDDOWN 是我定义的一个 picture控件的ID 

然后运行就报这个错误 ,删除以上两个地方的代码 程序ok 

新手,求解,谢谢。。

13 个解决方案

#1


忘了说了,环境 vc6.0

#2


前面还有信息 :File : wincore.cpp
             Line :  3877

#3


先确定一下控件ID是否正确,控件是否属于CDemoDlg所关联的对话框。
出错时中断程序,看看停在哪个函数的哪行代码上,另外再根据“Call Stack”窗口定位到引起错误的自己的代码,看看是不是这个DDX_Control。

#4


首先谢谢前辈这么晚了给我的回复。

ID是正确的。 控件也是属于CDemoDlg所关联的对话框的。 我设置 breakPoint ,代码是在 DDX_Control的错。

#5


出错时中断程序,看看停在哪个函数的哪行代码上(MFC源代码),如果看不出问题,把出错行前后的几行代码贴出来。
今天太晚了,明天再来看。

#6


之前我的代码是完全正常的 今天想加一个功能就错了,自己是新手 ,找了好久没找出原因 ,麻烦帮我看看
我传到这里了,整个工程 6mb多,有时间帮我看看,谢谢。
http://32.dc.ftn.qq.com/ftn_handler/0fe2313aa252295e0cb6e031e8362428be53a00aca74d749e82d9001f4eebc4426e6cf1c79f23ecbee7a62091e44377820b95e22269154c6e2a4cd9f326662d6/Demo.rar?k=0e6136621a82a3c766bb0b7911610217050452010203010c1f500257014c045950511b5a040008155703015b5155095b005105003769307c570c594c45004238

其中 加了两条 都是在 CDemoDlg类中加的 一个是  定义 CStatic m_pot;
  一个就是  DDX_Control(pDX, IDC_BU_UPANDDOWN, m_pot); 

#7


刚试了试,那个地址好像打不开,我传这里了。http://download.****.net/source/1953218
while(1)
{
cout << "谢谢!"<<endl;
}

#8


看看你的控件有没有丢失????

#9


我刚刚编译了一下,没有任何错误,你是不是没有重新编译?你要把debug下面的所有文件先删除,然后再重新编译

#10


新年了,回个帖子,祝愿大家新年快了哈

#11


估计就是控件的问题 是否改变了原有的控件或者添加相关联出错
我原来遇到过这样的问题 原有控件改变了 即使改回ID  也会报错

#12


对啊,没有任何错误,Build-Rebuild All就OK了

#13


引用 9 楼 waitlife 的回复:
我刚刚编译了一下,没有任何错误,你是不是没有重新编译?你要把debug下面的所有文件先删除,然后再重新编译


真的是这个原因。。。第一次遇到这种问题,开始一直找代码的原因。汗。。。。多谢大家了

结贴

#1


忘了说了,环境 vc6.0

#2


前面还有信息 :File : wincore.cpp
             Line :  3877

#3


先确定一下控件ID是否正确,控件是否属于CDemoDlg所关联的对话框。
出错时中断程序,看看停在哪个函数的哪行代码上,另外再根据“Call Stack”窗口定位到引起错误的自己的代码,看看是不是这个DDX_Control。

#4


首先谢谢前辈这么晚了给我的回复。

ID是正确的。 控件也是属于CDemoDlg所关联的对话框的。 我设置 breakPoint ,代码是在 DDX_Control的错。

#5


出错时中断程序,看看停在哪个函数的哪行代码上(MFC源代码),如果看不出问题,把出错行前后的几行代码贴出来。
今天太晚了,明天再来看。

#6


之前我的代码是完全正常的 今天想加一个功能就错了,自己是新手 ,找了好久没找出原因 ,麻烦帮我看看
我传到这里了,整个工程 6mb多,有时间帮我看看,谢谢。
http://32.dc.ftn.qq.com/ftn_handler/0fe2313aa252295e0cb6e031e8362428be53a00aca74d749e82d9001f4eebc4426e6cf1c79f23ecbee7a62091e44377820b95e22269154c6e2a4cd9f326662d6/Demo.rar?k=0e6136621a82a3c766bb0b7911610217050452010203010c1f500257014c045950511b5a040008155703015b5155095b005105003769307c570c594c45004238

其中 加了两条 都是在 CDemoDlg类中加的 一个是  定义 CStatic m_pot;
  一个就是  DDX_Control(pDX, IDC_BU_UPANDDOWN, m_pot); 

#7


刚试了试,那个地址好像打不开,我传这里了。http://download.****.net/source/1953218
while(1)
{
cout << "谢谢!"<<endl;
}

#8


看看你的控件有没有丢失????

#9


我刚刚编译了一下,没有任何错误,你是不是没有重新编译?你要把debug下面的所有文件先删除,然后再重新编译

#10


新年了,回个帖子,祝愿大家新年快了哈

#11


估计就是控件的问题 是否改变了原有的控件或者添加相关联出错
我原来遇到过这样的问题 原有控件改变了 即使改回ID  也会报错

#12


对啊,没有任何错误,Build-Rebuild All就OK了

#13


引用 9 楼 waitlife 的回复:
我刚刚编译了一下,没有任何错误,你是不是没有重新编译?你要把debug下面的所有文件先删除,然后再重新编译


真的是这个原因。。。第一次遇到这种问题,开始一直找代码的原因。汗。。。。多谢大家了

结贴