VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 806|回复: 10

[已解决]玩转控件第3课,按钮ID改变还是执行原来那套函数问题

[复制链接]
44_avatar_middle
最佳答案
0 
在线会员 发表于 2020-12-19 00:20:54 | 显示全部楼层 |阅读模式
玩转控件第3课,按钮ID改变还是执行原来那套函数问题 玩转控件第3课,按钮ID改变还是执行原来那套函数问题 玩转控件第3课,按钮ID改变还是执行原来那套函数问题

如图我新建得一个按钮控件  默认ID是IDC_BUTTON1,然后用这条指令关联了函数
ON_BN_CLICKED(IDC_BUTTON1, &CMFCTestDlg::OnBnClickedButton1),弹窗dddd,我理解了,然后我进行一下操作

把新建得按钮ID改成IDC_loin,按我得理解,ON_BN_CLICKED(IDC_BUTTON1, &CMFCTestDlg::OnBnClickedButton1),这条指令应该不会起效过啊,因为ID变量   关联不起来了啊,但是实际上还是弹窗dddd,为什么,我理解得应该弹窗aaaa才对啊

这个问题延伸出另一个问题,假设我设置了好多按钮,然后我也改了好多按钮得ID,我都不记得原来得ID是什么了,我连会执行哪条都不知道了,想删除删哪条都不知道了啊。

最佳答案
70_avatar_small
2020-12-20 11:49:08

我的意思是  IDC_BUTTON1 和 IDC_loin 的值是相等的

MFC 的MESSAGE MAP
相当于
  1. if (ID == IDC_BUTTON1) {
  2.         执行 OnBnClickedButton1
  3. }
  4. else if (ID == IDC_loin) {
  5.         执行 OnBnClickedButtonloin
  6. }
  7. else ...
复制代码


这样如果两个ID相同,那么后声明的事件就永远不会调到




上一篇:什么功能wchar_t能做char不行(为啥删我帖子)
下一篇:请大家推荐一个VC表格类
44_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-12-19 15:08:58 | 显示全部楼层
自己顶一下
40_avatar_middle
最佳答案
0 
在线会员 发表于 2020-12-19 16:28:05 | 显示全部楼层
问下你这边时候自由一个控件然后改了个名字又双击点进去增加了一个函数吗?
40_avatar_middle
最佳答案
0 
在线会员 发表于 2020-12-19 16:31:03 | 显示全部楼层
我照你这么做了也是发现相同的问题,但是问题是你改名字了就没有必要在去整两个函数了把,其实你只要第二次不直接双击电机就不会出现这个问题的
70_avatar_middle
最佳答案
43 
在线会员 发表于 2020-12-19 17:01:05 | 显示全部楼层
ID 只是一个数字,你去右键->查看定义,看看两个ID是不是同一个值
44_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-12-20 00:10:35 | 显示全部楼层
咸鱼李 发表于 2020-12-19 16:31
我照你这么做了也是发现相同的问题,但是问题是你改名字了就没有必要在去整两个函数了把,其实你只要第二次 ...

我改了ID,注意是ID不是名字,我双击跳到的函数不是要执行的那个函数
44_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-12-20 00:12:38 | 显示全部楼层
tony666 发表于 2020-12-19 17:01
ID 只是一个数字,你去右键->查看定义,看看两个ID是不是同一个值

图一图二上面的两条关联函数和执行操作的函数都是Button1的,我中间做了右键属性改ID的操作
70_avatar_middle
最佳答案
43 
在线会员 发表于 2020-12-20 11:49:08 | 显示全部楼层    本楼为最佳答案   
bestAnswer

我的意思是  IDC_BUTTON1 和 IDC_loin 的值是相等的

MFC 的MESSAGE MAP
相当于
  1. if (ID == IDC_BUTTON1) {
  2.         执行 OnBnClickedButton1
  3. }
  4. else if (ID == IDC_loin) {
  5.         执行 OnBnClickedButtonloin
  6. }
  7. else ...
复制代码


这样如果两个ID相同,那么后声明的事件就永远不会调到
Snipaste_2020-12-20_11-47-57.jpg
44_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-12-21 11:20:41 | 显示全部楼层
tony666 发表于 2020-12-20 11:49
我的意思是  IDC_BUTTON1 和 IDC_loin 的值是相等的

MFC 的MESSAGE MAP

你这段代码是在哪个文件里
70_avatar_middle
最佳答案
43 
在线会员 发表于 2020-12-21 11:30:15 | 显示全部楼层
a86116403 发表于 2020-12-21 11:20
你这段代码是在哪个文件里


Resource.h   里

Snipaste_2020-12-21_11-28-55.png
44_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-12-30 13:29:51 | 显示全部楼层

我无法看Resource.h里面的东西,但是我鼠标放上去确实两个ID是一个值
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2021-4-22 07:05

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表