Error: no data exchange control with ID xx 错误分析

来源:互联网 发布:十年窗下无人知 编辑:程序博客网 时间:2024/05/14 09:34

VS2008sp1,windows XP sp3,debug

Error: no data exchange control with ID xx

该问题出现时可以通过编译,但是运行的时候会触发断点。

在处理对话框控件的时候出现该问题。已知的原因是因为删除了关联了变量的控件后出现的。

网上有原因解释:1、因为删除控件的同时没能删除其关联的变量

                                2、因为控件ID重复

本人按照网上说明处理了一番,删除了DoDataExchange()下的所有类似DDX_Control(pDX, ID, m);DDX_TEXT(pDX,ID,m)的语句,从头文件删除了相关的变量,然后重新关联了所有的控件,在resource.h中修改了重复ID的控件的值,发现仍不能解决问题。

然后我清理了所有解决方案,再次生成,编译,运行,这回问题解决了。

本人分析说:有时候我们编程时候在做一些修改后以为没问题,而运行却出问题,说明有些地方并没有随着我们更改而更改,这些部分可能就是需要编译器所做的,而编译器并没有做。为什么没有做呢?因为我们直接进行了生成、编译,而编译器没有从头开始进行编译链接,编译器只是对它认为需要更改的部分进行了更改,而实际需要更改的要比编译器认为需要更改的多了,使得需要更改的部分被落下了一些,所以运行时出现了错误。网上应该有相应的资料,我还没来得及查找,暂时先在这猜测着。