MFC ComboBox控件中EditChange无反应

博客讲述了在MFC应用程序中,作者遇到ComboBox控件CNB_EDITCHANGE消息未正常触发的问题。当从下拉列表选择一个选项后编辑内容,首次修改控件内容不会更新,直到第二次修改才生效。问题可能与GetCurSel()函数返回值有关,该函数在第一次修改后返回选择列表的索引而非-1。作者还提到尝试使用UpdateData()更新数据,但由于工程中缺少afxwin.h头文件导致错误。文章请求MFC专家提供解决方案,并附带了相关代码段。
摘要由CSDN通过智能技术生成
Hello, 大家好! 我有一个ComboBox控件,有CNB_SELECTCHANGE和CNB_EDITCHANGE两个消息映射,响应函数分别为OnEditChange和OnCmbSelectChang,
我操作的顺序是这样的:在控件中先从下拉列表选择一个选项,然后就修改控件中的内容。
问题在于:选择列表选项后,第一次修改控件内容没有改变并保持原来的内容,得第二次修改才会改变。原因在下面代码中的GetCurSel()函数中,在第一次修改后返回的还是选择列表的索引号而不是-1.
是我在select之后的处理问题吗?我想用UpdateData()来更新数据,但是工程里没有包含afxwin.h,添加了此函数会提示错误。
不是很明白MFC的原理,求高手解答?

以下是一部分代码:”

BEGIN_MSG_MAP(CComboBoxListControl)
    CHAIN_MSG_MAP(CListControl)
    COMMAND_CODE_HANDLER(CBN_EDITCHANGE, OnEditChange)
    COMMAND_CODE_HANDLER(CBN_SELCHANGE, OnCmbSelectChange)
{
    static int nNumber = 0;
AtlTrace(_T("Combo - <%d>- %d -\n"), nNumber++, uMsg);
}
ALT_MSG_MAP(1)
    COMMAND_CODE_HANDLER(CBN_EDITCHANGE, OnEditChange)
    COMMAND_CODE_HANDLER(C
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值