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

  • 相关阅读:
    Selct 大全
    Web API
    其他
    ADO.NET Entity Framework
    ORACLE SQL前端补0的三种方式。
    linux常用命令
    oracle 创建修改 job
    oracle 如何恢复误删的表记录数据
    myeclipse上SVN代码合并详细步骤图解
    SVN创建资源与分支详解
  • 原文地址:https://www.cnblogs.com/zhaojk2010/p/8072252.html
Copyright © 2011-2022 走看看