zoukankan      html  css  js  c++  java
  • 关于ComboBox的控件事件CBN_SELCHANGE总是取到旧值的问题

    我发现复选框,选择以后,在这个事件函数中,总是取到旧值,读了这个朋友的文章,找到了解决方法。

    下面是参考的文章: http://scorpiomiracle.iteye.com/blog/710511

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

    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)来取得改变后的值

  • 相关阅读:
    bug、兼容性、适配问题
    关于daterangepicker取消默认值的设置
    重构-改善既有代码设计
    iphoneX 适配
    汇编语言(2)程序表示
    汇编语言(1)基础理论
    css 边框颜色渐变的半圆
    横向时间轴(进度条)
    pdf中内嵌字体问题
    jabRef里引用的相邻同名作者变横线
  • 原文地址:https://www.cnblogs.com/zhaojk2010/p/8072252.html
Copyright © 2011-2022 走看看