关于ComboBox的控件事件CBN_SELCHANGE的问题

在编一个 MFC程序时,想响应一个下拉框ComboBox控件选择改变的事件,但是,总是在下一次选择改变的时候才触发上次的响应。

参考:
[url]http://topic.youkuaiyun.com/u/20090209/13/d1f74642-6098-40c2-8f4a-b053259b1ca3.html?seed=1987077585&r=66897224#r_66897224[/url]
中 cnzdgs 的两个回答,才明白:

1,关联变量就是通过 GetDlgItemText/SetDlgItemText 的方式更新的

2,在ComboBox发送 CBN_SELCHANGE 消息的时候,只是改变了GetCurSel获得的索引,关联变量是操作完成之后才能更新的,所以窗口文字还没有更新,通过关联变量 UpdateData(true)取得的就还是原来的文字。

3,实践证明,此时使用 CBN_EDITUPDATE 和 CBN_EDITCHANGE 没有任何反应。一种说法是 这只是响应 直接 在文本框 输入值 的事件,未求证。另外,响应 CBN_SELENDOK 的实际效果也是在窗口文字还没有改变的时候就响应了。

解决方法:
在 CBN_SELCHANGE 的响应函数中:
int index = ((CComboBox*)GetDlgItem(IDC_COMBO1))->GetCurSel();
((CComboBox*)GetDlgItem(IDC_COMBO1))->SetCurSel(index);
drawNODE(); // 此函数中有 UpdateData(true) 来获取关联变量,即改变后的值

或者:
GetCurSel()+GetLbText(n,strTemp)来取得改变后的值

相关推荐

MFC中 CComboBox 控件 (2) —选择和检索项、获取和设置属性

返回指定索引项的文本长度(不包括结尾的 null 字符)。之前,请确保提供的索引是有效的。如果索引超出了组合框中现有项的范围,将不会选中任何项。执行的是部分匹配查找,即如果项的文本从开始处包含指定的字符串,它就认为是匹配的。执行的是部分匹配查找,即如果项的文本从开始处包含指定的字符串,它就认为是匹配的。第一个是要检索文本的项的索引,第二个是一个引用或指针,指向一个。之前,确保提供的索引是有效的。之前,请确保提供的索引是有效的。的第一个参数是开始搜索的索引,传入。的第一个参数是开始搜索的索引,传入。

CaiCai924的博客 4047

CBN_SELCHANGE

void CDlgLayout::OnSelchangeComboPanelSlot() {  //TODO: Add your control notification handler code here  CString csPanelIndex;  int iPanelIndex = 0;  int nSel = ((CComboBox*)GetDlgItem(IDC_COMBO

mengzhuanghua的专栏 1431

Win32 学习笔记_组合框控件(ComboBox)

此样式最适用于包含文件名的组合框,仅适用于使用CBS_SIMPLE或CBS_DROPDOWN样式创建的组合框。在列表框中显示一个禁用的垂直滚动条,当该框不包含足够的项目滚动时。将组合框编辑控件中输入的文本从Windows字符集转换为OEM字符集,然后返回到Windows字符集。指定列表框的所有者负责绘制其内容,并且列表框中的项目高度可变。指定组合框的大小正好是应用程序在创建组合框时指定的大小。通常,系统调整组合框的大小,使其不显示部分项。指定列表框的所有者负责绘制其内容,并且列表框中的项目的高度相同。...

qq_31178679的博客 2479

C++学习小记:组合框的消息响应CBN_SELCHANGE和CBN_SELENDOK的区别

C++ 组合框的消息响应CBN_SELCHANGE和CBN_SELENDOK的区别

ttt19880110的专栏 6105

MFC:组合框ComboBox的使用

MFC组合框ComboBox的使用方法介绍。

m0_72128260的博客 2042

用Linkboy玩转Arduino:3小时搞定智能倒车雷达(附仿真文件下载)

本文详细介绍了如何利用Linkboy图形化编程工具,在3小时内快速搭建一个基于Arduino的智能倒车雷达项目。通过仿真环境,初学者无需硬件即可学习超声波测距原理、报警逻辑设计,并完成从虚拟仿真到实体硬件的完整流程。文章提供了清晰的步骤、调试技巧及功能扩展思路,并附有仿真文件,是入门Arduino和智能硬件制作的绝佳实践指南。

weixin_29159441的博客 403

ComboBox的控件事件CBN_SELCHANGE的问题

http://scorpiomiracle.iteye.com/blog/710511 这里有个关键点就是执行顺序和执行了什么的问题? 当触发CBN_SELCHANGE消息时,这时combobox中的索引值改变,但是这时候的文字框里面的内容没有改变。这时GetWindowText()肯定得到的是先前的内容(相对于想要的)。这以后,在完成关联变量的更新,combobox里面出现想要的内容。 为

xfortius的专栏 1万+

3D数学-动力学

3D数学-11-动力学 旋转运动学 二维旋转动力学 首先我们考虑最简单的情况: 我们将F施加在圆盘(忽略质量)上的一个点(质量为m)上 图中:F为我们施加的力,O是枢轴原点。 通过基本的运算,我们可以得到 F'= F*sinθ 那么切向加速度 a = F'/ m 切向加速度是线性速度的加速度,我们通过除以半径获得角加速度 α = a / r 现在,我们换一种方式,那就是通过杠杆臂的方式去施加力 为了能够计算出m点的角加速度,我们需要引入一个概念:扭矩 他的理解类似于力矩,公式如下 τ = Flsi

韩天衣的博客 2285

关于ComboBox的控件事件CBN_SELCHANGE总是取到旧值的问题

我发现复选框,选择以后,在这个事件函数中,总是取到旧值,读了这个朋友的文章,找到了解决方法。下面是参考的文章: http://scorpiomiracle.iteye.com/blog/710511在编一个 MFC程序时,想响应一个下拉框ComboBox控件选择改变的事件,但是,总是在下一次选择改变的时候才触发上次的响应。1,关联变量就是通过 GetDlgItemText/SetDlgItemTe...

weixin_30278237的博客 330

模电专题-MOS管的放大电路分析

在实际应用中,我们经常会使用到功率MOS,这时通常不会将它当成一个开关使用,而是当成一个放大器来使用,那这就需要让其工作在放大状态。参考下图中的mos管的特性曲线,右图中的输出特性曲线中有一根红色的分界线,这个线就是区分mos管工作状态的分界线,在红线的左边,mos管工作在可变电阻区,也就是线性区;在红线的右边mos管工作在恒流区,也就是饱和区。当然,还有一个截止区。本文分析主要运用模电课本中的理论计算验证。

Anitawen的博客 2万+

IPV6基本配置

IPV6配置,DHCPV6,华为模拟器,IPV6的M/O标志位

路漫漫其修远兮 4665

[MFC] Combo Box CBN_SELCHANGE响应问题

当选择Combo Box中的某一行时,我需要获取其内容,以实现需求的相应操作。 理所当然地使用GetWindowText()函数获取该Combo Box当前的窗口内容,但每次都需要点两下才会响应。 事实是CBN_SELCHANGE事件过程中该Combo Box窗口内容还未更新,只能通过获得所选行号间接获得所选内容: m_class_instances_.GetLBText(m_class_i

逸之的专栏 2400

【重识云原生】第四章云网络4.7.5节vDPA方案——virtio的半硬件虚拟化实现

vDPA(vhost Data Path Acceleration)即是让virtio数据平面不需主机干预的解决方案。该框架由Redhat提出,实现了virtio数据平面的硬件卸载。控制平面仍然采用原来的控制平面协议,当控制信息被传递到硬件中,硬件完成数据平面的配置之后,数据通信过程由硬件设备(智能网卡)完成,虚拟机与网卡之间直通。中断信息也由网卡直接发送至虚拟机不需要主机的干预。......

junbaozi的专栏 2188

Combox对象的 CBN_SELCHANGE事件

 今天发现响应一个Combox的CBN_SELCHANGE消息时,总得到Combox上次的旧值,不解!后来优快云,发现有人响应该消息得到的却是新的值。。尝试修改了Combox的属性,将Drop down 属性改为 Drop List后,发现 CBN_SELCHANGE消息响应时得到的就是新的值。

lyzhm的专栏 4858

【OpenClaw从入门到精通】第24篇:OpenClaw Skill商业化实战指南——从0开发付费技能,在ClawHub变现(2026实测版)

本文聚焦OpenClaw Skill商业化的全流程落地,基于2026年生态现状、公开行业报告及开发者指南,拆解付费Skill的市场机会、商业模式、技术实现、发布运营及避坑要点。核心围绕“Freemium API Backend”主流路径,通过虚拟但贴合真实场景的“金融研报复现”案例,提供从需求分析、定价设计到代码开发、ClawHub上架的完整实操方案。文中包含可直接复用的代码片段、执行结果演示及流程图解,既满足新手快速入门的需求,也为进阶开发者提供商业化落地的关键思路,帮助读者抓住AI Agent早期红利。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1084

机器学习实战——疫情数据分析与预测

机器学习如何做到疫情可视化——疫情数据分析与预测实战 本文将带领大家爬取11个国家以及中国31个省(自治区、直辖市)在2022.0101-2022.06.19的新冠疫情数据。并且采用机器学习模型对2022.6.20-2022.6.30每一天的全国确诊人数、死亡人数、治愈人数进行预测,**做出疫情可视化图形并且求出最终的相关系数R2!...

拥有百余位万粉技术博主、200余位可合作代发博主,私域技术社群规模达千人,商务合作私信 10万+

vc中ComboBox控件用法详解

由于接触VC时间不长,对VC中控件的用法也不是很了解,用到时在网上查了很多,现总结如下:1、改变下拉框大小:先点向下的箭头,就可以调整下拉框大小2、如果 ComboBox 的 Sorted 属性设置为 true,   则新添加项将按字母顺序插入到列表中。   否则,在列表的结尾处插入项。3、要立即响应选择框的改变(即选择框一改变选项,就立刻将结果传递进去)!   响应他的哪个消息比较好

最后一班地铁的专栏 1万+

UI渲染顺序:合批为何被拆碎?

在 Hierarchy 中,避免出现:Image(列表1) → Text(列表1) → 特效 → Image(列表2) → Text(列表2)…若可行,在逻辑上把布局组织成“同类元素集中”:例如:列表行中,Image 集中、Text 集中;或者接受 Text 本身就拆出一批,关键是不要在 Text 中间再插入别的材质。现实中不一定能做到完美的“所有 Image 连在一起”,但你会有一个意识:同一 Canvas 内,如果你把不同材质的元素交错穿插,

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 85

Combo Box CBN_SELCHANGE事件

当Combo Box需要自动选择默认时,加入如下代码: CWnd *myWnd = GetDlgItem(IDC_COMBO_ALGORITHM); SendMessage(WM_COMMAND,MAKEWPARAM(IDC_COMBO_ALGORITHM,CBN_SELCHANGE),(LPARAM)myWnd->m_hWnd);

经典的误导的专栏 1674

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

mfc combo box 控件使用方法总结

转自:http://blog.sina.com.cn/s/blog_534408920100al29.html 由于接触VC时间不长,对VC中控件的用法也不是很了解,用到时在网上查了很多,现总结如下: 1、改变下拉框大小:先点向下的箭头,就可以调整下拉框大小 2、如果 ComboBox 的 Sorted 属性设置为 true,    则新添加项将按字母顺序插入到列表中。    否

hnuzxc的专栏 1545

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

MFC ComboBox

一、入门篇   ComboBox (组合框)控件很简单,可以节省空间。从用户角度来看,这个控件是由一个文本输入控件和一个下拉菜单组成的。用户可以从一个预先定义的列表里选择一个选项,同时也可以直接在文本框里面输入文本。下面的例子简要说明如何利用 MFC CComboBox Class来操作字符串列表。 1、定义控件对应变量 假定已经创建了一个Dialog,并且从控件工具箱将 Combo Bo

whatday的专栏 2090

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

vc++MFC设置Combo box下拉选择改变事件,解决想响应一个下拉框ComboBox控件选择改变的事件时,但总在下一次选择改变时才触发上次的响应问题。

3、在事件函数中添加:int index =((CComboBox*)GetDlgItem(IDC_COMBO1))->GetCurSel();//获取所选项的索引。//设置改变事件为所选项索引。2、选择组合框右击,选择事件,添加事件函数CBN_SELCHANGE。//更新,获得所选项索引。1、打开MFC添加组合框。

weixin_45948117的博客 3072

Combobox的owner draw问题

在用Combobox的owner draw 属性,无论google,或者msdn都没有明确的文章来指出属性之间的关联关系,花了不少时间,特地记下来。 CBS_OWNERDRAWFIXED 属性要求必须实现 CBN_SELCHANGE方法,然后通过SetWindowText设定Editbox的内容,否则owner draw的combobox无法自动改写Editbox的内容 在

net_wolf的专栏 2091

MFC 当COMBOBOX改变时,获得其所选定的值

CString m_sName; Combobox m_CmbName; .... .... int nIndex = m_CmbName.GetCurSel(); m_CmbName.GetLBText(nIndex,m_sName); 这种方法可以解决当你需要在改变m_CmbName的选项时,同时要根据选中的Combobox量改变其他控件信息的时候使用。当然要在ON_CBN_SELCHANG...

不断学习 5429

MFC对于Combo box控件GetWindowText获取控件值不正确

http://zaneluo.blog.51cto.com/7823750/1422764 Combo Box响应CBN_SELCHANGE消息使用GetWindowText()控件每次获取的值为上次的选择值,但是在CBN_SELCHANGE消息的处理函数OnCbnSelchangeComboDrive()中,使用GetWindowText()函数获取的并不是当前选中项目的内容,而是之前选中

iwilldoitx的博客 1762
上一篇: VS 2005使用map文件查找程序崩溃原因(转载,很好)
下一篇: xp下直接删掉ubuntu分区后无法启动xp,提示 grub rescue
scorpiomiracle
博客等级 码龄17年 5粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值