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


    我在用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
    名称,编译运行,就可以解决上面的异常错误问题了!!!


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

  • 相关阅读:
    c++ 利用new动态的定义二维数组
    golang在linux后台执行的方法
    Linux安装配置go运行环境
    SpringCloud 笔记
    你真的了解 Unicode 和 UTF-8 吗?
    Elasticsearch 系列文章汇总(持续更新...)
    Maven 的依赖范围
    在 centos 上安装 virutalbox
    Java 异常总结
    使用 RabbitMQ 实现异步调用
  • 原文地址:https://www.cnblogs.com/ubunoon/p/1402838.html
Copyright © 2020-2023  润新知