`
scorpiomiracle
  • 浏览: 263670 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

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

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

参考:
http://topic.csdn.net/u/20090209/13/d1f74642-6098-40c2-8f4a-b053259b1ca3.html?seed=1987077585&r=66897224#r_66897224
中 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)来取得改变后的值


分享到:
评论

相关推荐

    winform关于combobox控件使用详解

    ComboBox 控件可以响应多种 Notification 消息,例如 CBN_SELCHANGE 消息。当用户选择 ComboBox 控件中的一个不同的项时,这个消息将被触发。这个消息的参数包括控件的标识符和控件的句柄。 使用 EnableWindow 函数...

    MFC ComboBox控件的使用方法

    例如,ON_CBN_DBLCLK响应鼠标双击事件,ON_CBN_DROPDOWN处理下拉列表框弹出事件,ON_CBN_KILLFOCUS和ON_CBN_SETFOCUS分别处理输入框失去和获得焦点事件,ON_CBN_SELCHANGE响应选项变化事件,ON_CBN_EDITUPDATE处理...

    combox控件匹配

    ComboBox控件结合了下拉列表和文本框的功能,提供了一种灵活的用户交互方式。当用户点击组合框时,会弹出一个下拉菜单,显示一系列可选项。用户可以选择其中一项,或者直接在文本框部分输入内容。这种设计使得...

    combo box控件

    在处理ComboBox的事件时,MFC提供了一些消息映射函数,如ON_CBN_SELCHANGE,当用户从列表中选择一个新的选项时,这个函数会被调用。你可以在对话框类的头文件中添加相应的消息映射,然后在实现文件中编写处理函数: ...

    MFC中ComboBox使用方法_用法_手册

    #### 一、ComboBox控件概述 在MFC框架下,`ComboBox`(组合框)是一种非常实用的控件,它结合了文本输入与下拉菜单的功能,允许用户从预定义的列表中选择一项,同时也能直接在文本框内输入文本,有效节省界面空间并...

    利用VC控件ComboBox编写的代码

    ComboBox控件是Windows GUI应用程序中常用的一种元素,它结合了下拉列表和文本输入框的功能,使得用户既可以输入自定义文本,也可以从预设的列表中选择选项。本篇文章将深入探讨如何利用VC控件ComboBox进行编程,...

    VC++中的ComboBox

    ComboBox控件有多个重要的消息,如CBN_SELCHANGE(项选择改变)、CBN_DBLCLK(双击事件)等。需要在消息映射中添加对应的处理函数,例如`ON_CBN_SELCHANGE(IDC_COMBO1, OnCbnSelchangeCombo1)`。 6. **禁用或启用...

    combobox控件 屏蔽上下键 上下键控件间切换

    对于回车键弹出和关闭下拉列表,并在关闭时自动跳转到下一个控件,我们需要处理`WM_COMMAND`消息,检查是否由回车键触发了`CBN_SELCHANGE`通知。在选中新的项后,可以使用`GetNextDlgTabItem`函数找到并激活下一个...

    ComboBox控件

    #### 六、ComboBox控件的常见问题及解决方法 1. **如何清空ComboBox中的所有项**: - 可以使用`ResetContent()`方法来清空ComboBox中的所有项。 2. **如何获取ComboBox中选定的项**: - 使用`GetCurSel()`方法...

    ComboBox_使用方法.doc

    - `ON_CBN_SELCHANGE` 选择项改变事件。 - `ON_CBN_EDITUPDATE` 输入框内容更新事件。 补充: - 动态添加/删除内容: - 可以在程序初始化时动态添加Items,例如遍历一个范围并添加: ```cpp for (int i = 1; i ;...

    COMBOBOX实例

    例如,当用户从下拉列表中选择一个新项时,程序会接收到CBN_SELCHANGE消息,我们可以通过重载`ON_CBN_SELCHANGE`来响应这个事件。 在实际应用中,我们可能还需要自定义COMBOBOX的行为。例如,可以通过重写CComboBox...

    MFC_ComboBox_使用方法.doc

    MFC的CComboBox类是Windows API中的ComboBox控件的封装,用于实现对话框或窗口中的下拉列表框功能。这个控件提供了用户从预定义的列表中选择项或直接输入文本的功能。以下是对MFC CComboBox类使用方法的详细解释: ...

    MFC中ComboBox组合框的使用

    在MFC程序开发中,ComboBox控件是一种常用的交互元素,它结合了文本输入框和下拉列表的功能。本文将详细讲解如何使用MFC中的CComboBox类来操作和管理ComboBox控件。 首先,为了使用ComboBox控件,我们需要在对话框...

    VC下拉列表控件ComboBox视频

    通过在消息映射表中添加对应的函数,比如ON_CBN_SELCHANGE,可以处理选中项改变的事件。 5. **获取用户选择**:当用户做出选择后,可以通过GetCurSel()函数获取当前选中的索引,或者用GetLBText()函数获取选中项的...

    mfc list 里嵌入combobox

    5. **处理组合框事件**:你需要捕获ComboBox的BN_CLICKED或CBN_SELCHANGE消息,这通常通过重载OnCommand()方法来实现,以便在用户选择新选项时执行相应操作。 ```cpp ON_COMMAND_RANGE(IDC_COMBO1, IDC_COMBO1 + ...

    VC/MFC ComboBox下拉列表控件程序

    在Microsoft Visual C++ (VC) 和MFC (Microsoft Foundation Classes) 框架中,ComboBox控件是一个非常常用的UI元素,它结合了文本输入框和列表框的功能,允许用户从预定义的选项中进行选择或者输入自定义内容。...

    VC++实现工具条中的ccombobox控件

    例如,ON_CBN_SELCHANGE()消息映射项对应于ComboBox的选中项改变事件。 在压缩包中的"ToolBarComboDemo"可能包含了完整的源代码和资源文件,你可以通过编译和运行这个示例来了解具体实现细节。通过学习和分析这个...

    商业编程-源码-一个关于CComboBox控件的简单例子.zip

    CComboBox是MFC对Windows操作系统中的COMBOBOX控件的封装,这个控件结合了文本输入框和列表框的功能,允许用户从预定义的列表中选择或者输入新的值。 CComboBox控件主要有三种模式:简单模式、下拉列表模式和下拉...

    VC中操作COMBO控件的程序

    COMBO控件的选中项改变时,会发送CBN_SELCHANGE消息。在消息映射中添加如下代码: ```cpp BEGIN_MESSAGE_MAP(CYourDialog, CDialog) ON_BN_CLICKED(IDC_BUTTON1, &CYourDialog::OnBnClickedButton1) // 示例按钮...

Global site tag (gtag.js) - Google Analytics