MFC类向导的“对象ID”列表里没有手动创建的控件的ID

2024-04-20 11:38

本文主要是介绍MFC类向导的“对象ID”列表里没有手动创建的控件的ID,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

----------------------------------------------------------------------------------------------------------------------------------------

bug天天有,今天的特奇怪!我在给一个对话框手动创建了几个控件后,可以正常运行显示那些控件。似乎一切都正常,但是就在我想通过类向导给“保存按钮”添加事件处理程序时,奇怪的事情发生了:在类向导的“对象ID”列表里居然没有那些手动创建的控件的ID。然而之前的几个功能的对话框里的控件的事件处理程序也是进行类似的操作编写的,没遇到这个问题。下面就来重现一下debug的过程!

----------------------------------------------------------------------------------------------------------------------------------------


问题描述


MFC类向导的“对象ID”列表里没有手动创建的控件的ID。如下图所示


问题分析


遇到该问题我第一反应便是思考是不是操作过程中缺少了什么步骤,仔细回想一下并没有!

自己思考无果之后,变拿出了程序员的利器:各种搜索引擎,Google、百度、360搜素。然而没有一个完全的匹配我的问题的,但可能匹配读者的问题,与时我将个人觉得比较靠谱的链接附在下面,望读者参考:

【为什么我的类向导里没有新添加控件的ID】:      http://bbs.csdn.net/topics/190068916

【VS2010使用MFC类向导时提示“灾难性故障”的解决】:    http://blog.csdn.net/menglongbor/article/details/7609560


虽然上面两个案例跟我的bug不是完全匹配,但是还是给了我一个很大的提示:要确保资源ID唯一性,特别是在修改资源ID的之后可能会有安全隐患!


打开“resource.h”文件后发现,因为之前对话框ID有错别字,我进行过修改,但修改后没有及时删除原先错误的ID,与时出现了两个ID数值相同的宏。而出问题的对话框就是那些控件所属的对话框。如下图所示:



解决方案

删掉错误的宏定义,保留唯一的真确的那个宏。之后再重启一下VS即可!


类向导的“对象ID”列表可以正确显示需要的控件资源ID了。问题解决!



注意:在MFC中资源ID虽然可以随意指定,但不要和现有的资源ID相同,要确保ID的唯一性。有时候你不知道某个ID是不是被占用,你可以用GetDlgItem来测试一下。





这篇关于MFC类向导的“对象ID”列表里没有手动创建的控件的ID的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/920164

相关文章

Linux线程之线程的创建、属性、回收、退出、取消方式

《Linux线程之线程的创建、属性、回收、退出、取消方式》文章总结了线程管理核心知识:线程号唯一、创建方式、属性设置(如分离状态与栈大小)、回收机制(join/detach)、退出方法(返回/pthr... 目录1. 线程号2. 线程的创建3. 线程属性4. 线程的回收5. 线程的退出6. 线程的取消7.

mybatis执行insert返回id实现详解

《mybatis执行insert返回id实现详解》MyBatis插入操作默认返回受影响行数,需通过useGeneratedKeys+keyProperty或selectKey获取主键ID,确保主键为自... 目录 两种方式获取自增 ID:1. ​​useGeneratedKeys+keyProperty(推

创建Java keystore文件的完整指南及详细步骤

《创建Javakeystore文件的完整指南及详细步骤》本文详解Java中keystore的创建与配置,涵盖私钥管理、自签名与CA证书生成、SSL/TLS应用,强调安全存储及验证机制,确保通信加密和... 目录1. 秘密键(私钥)的理解与管理私钥的定义与重要性私钥的管理策略私钥的生成与存储2. 证书的创建与

Python中将嵌套列表扁平化的多种实现方法

《Python中将嵌套列表扁平化的多种实现方法》在Python编程中,我们常常会遇到需要将嵌套列表(即列表中包含列表)转换为一个一维的扁平列表的需求,本文将给大家介绍了多种实现这一目标的方法,需要的朋... 目录python中将嵌套列表扁平化的方法技术背景实现步骤1. 使用嵌套列表推导式2. 使用itert

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os

python如何创建等差数列

《python如何创建等差数列》:本文主要介绍python如何创建等差数列的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python创建等差数列例题运行代码回车输出结果总结python创建等差数列import numpy as np x=int(in

怎么用idea创建一个SpringBoot项目

《怎么用idea创建一个SpringBoot项目》本文介绍了在IDEA中创建SpringBoot项目的步骤,包括环境准备(JDK1.8+、Maven3.2.5+)、使用SpringInitializr... 目录如何在idea中创建一个SpringBoot项目环境准备1.1打开IDEA,点击New新建一个项

如何使用Maven创建web目录结构

《如何使用Maven创建web目录结构》:本文主要介绍如何使用Maven创建web目录结构的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录创建web工程第一步第二步第三步第四步第五步第六步第七步总结创建web工程第一步js通过Maven骨架创pytho

如何在Mac上彻底删除Edge账户? 手动卸载Edge浏览器并清理残留文件技巧

《如何在Mac上彻底删除Edge账户?手动卸载Edge浏览器并清理残留文件技巧》Mac上的Edge账户里存了不少网站密码和个人信息,结果同事一不小心打开了,简直尴尬到爆炸,想要卸载edge浏览器并清... 如果你遇到 Microsoft Edge 浏览器运行迟缓、频繁崩溃或网页加载异常等问题,可以尝试多种方

MySQL 用户创建与授权最佳实践

《MySQL用户创建与授权最佳实践》在MySQL中,用户管理和权限控制是数据库安全的重要组成部分,下面详细介绍如何在MySQL中创建用户并授予适当的权限,感兴趣的朋友跟随小编一起看看吧... 目录mysql 用户创建与授权详解一、MySQL用户管理基础1. 用户账户组成2. 查看现有用户二、创建用户1. 基