VC++替换控件ID引发的错误

在使用VC6.0开发时遇到图片ID加载错误的问题,通过调试发现是由于预编译特性导致的控件ID不匹配。本文介绍了一种解决方法,通过临时更改并恢复控件ID来确保程序正常运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我在用vc 6.0开发程序的时候,发现载入图片的ID总是出现错误,很费解!!

后来经过调试与修改,终于了解一些内容。

为了获取方便,我将所有的ID号分类存储到一个类的const static变量中,这样便于循环遍历操作,但是这却引来了一个问题。

由于C++采用预编译的方式类进行修改,当这个类做完后编译变量值就已经确定了。

当我处理界面的时候,发现这个界面的控件使用的不是那么确切,删除界面上的控件,再将控件ID修改为原先的ID,这样,代码
中的很多内容就不需要修改了,这个时候,由于原先编译的const static变量的值是原先的值,而新增加控件的ID的值可能并不
是原先同名ID的值,这个时候,程序代码跑起来的时候,就会出现assert之类的错误了!!!

比方说我现在由一个CButton的控件ID(IDC_SHOW_MESSAGE),但是感觉用的不是那么确切,而系统中有另外一个控件类型CStatic,
这个时候,我删除在界面上CButton的控件,将CStatic的控件放置上去,将CStatic的ID修改为IDC_SHOW_MESSAGE,此时如果编译
运行,极有可能原先CButton的IDC_SHOW_MESSAGE与CStatic的IDC_SHOW_MESSAGE不是同一个数据值,而预编译的值还是原先的那个
值,此时可以通过这么一种方式来解决该问题:

先在定义const static 变量处打个空格之类的,然后修改控件IDC_SHOW_MESSAGE为其他的一个名字,之后修改为IDC_SHOW_MESSAGE
名称,编译运行,就可以解决上面的异常错误问题了!!!


很隐蔽,代码并没有错误,只是编译器的一个特性导致的一个问题。

转载于:https://www.cnblogs.com/ubunoon/archive/2009/03/04/1402838.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值