博客
关于我
MFC ComboBox控件中EditChange无反应
阅读量:796 次
发布时间:2023-02-08

本文共 1432 字,大约阅读时间需要 4 分钟。

为了解决您遇到的MFC开发问题,以下是分步骤的解决方案:

  • 包含所需文件:确保在项目中包含afxwin.h文件。这个文件包含MFC必要的定义和函数,包括UpdateData()。如果尚未包含,可以在代码中添加:

    #include 

    这样可以确保编译成功并正确链接MFC库文件。

  • 检查和修正消息映射:查看并确认消息映射是否正确。确保消息链中包含CBN_EDITCHANGE和CBN_SELCHANGE,并且响应函数OnEditChange和OnCmbSelectChange已经正确映射。例如:

    BEGIN_MSG_MAP(CComboBoxListControl)ChainMsgMap(CListControl)COMMAND_CODE_HANDLER(CBN_EDITCHANGE, OnEditChange)COMMAND_CODE_HANDLER(CBN_SELCHANGE, OnCmbSelectChange){    // 调试日志或其他处理逻辑}ALT_MSG_MAP(1)// 其他消息处理

    确保没有遗漏任何重要的消息处理。

  • 处理CBN_EDITCHANGE事件:在OnEditChange函数中,使用GetCurSel()获取当前选中的索引。注意到在用户输入后,GetCurSel()可能返回-1,表示用户并未选择列表中的选项。因此,在处理这种情况时,应区分用户输入和实际选项选择:

    void OnEditChange(){    // 获取当前选中的索引    int nSelect = GetCurSel();    // 如果nSelect为-1,表示用户输入的是自定义内容    if (nSelect == -1)    {        // 处理自定义输入的情况        // 例如,更新数据源或其他逻辑    }    else    {        // 获取当前内容并更新数据源        int nItem = GetCurSel();        GetWindowText(IDC_EDIT, szText);        // 更新数据源或其他逻辑    }}

    这样可以确保在用户输入自定义内容时,正确处理,而在选择列表选项时,正确获取索引。

  • 处理CBN_SELCHANGE事件:在OnCmbSelectChange函数中,获取当前选中的索引,并将其设置为控件的内容。例如:

    void OnCmbSelectChange(){    int nItem = GetCurSel();    GetWindowText(IDC_EDIT, szText);    // 更新数据源或其他逻辑}

    这样可以在用户选择列表选项时,确保数据被正确更新。

  • 修正逻辑流程:确保在用户选择列表选项后,正确触发更新数据的逻辑。例如,在CBN_SELCHANGE事件中,可以立即更新数据源,这样在第一次选择选项时,数据会被正确设置。然后,在用户修改内容时,CBN_EDITCHANGE事件会根据实际输入更新数据。

  • 调试和测试:在修改代码后,重新编译项目并进行调试。通过调试工具观察在选择和修改控件内容时,数据源是否正确更新。特别注意第一次修改和选择时的行为,确保逻辑正确无误。

  • 通过以上步骤,您应该能够解决当前的问题,确保ComboBox控件的更新逻辑正常工作,并正确使用UpdateData()函数来更新数据源。

    转载地址:http://oryfk.baihongyu.com/

    你可能感兴趣的文章
    Making the Grade [POJ3666] [DP]
    查看>>
    malloc和定位new表达式
    查看>>
    Malor Mass(分子量)
    查看>>
    MAMP无法正常启动,错误提示The built-in Apache is active
    查看>>
    mamp环境下navicat无法链接本地mysql
    查看>>
    Managing CentOS/RHEL kernel modules.
    查看>>
    Mangoa-Auth/芒果自助多应用企业级授权系统拥有盗版入库、远程更新等功能
    查看>>
    MangoDB4.0版本的安装与配置
    查看>>
    Manjaro 24.1 “Xahea” 发布!具有 KDE Plasma 6.1.5、GNOME 46 和最新的内核增强功能
    查看>>
    Manjaro 24.2 “Yonada” 发布:尖端功能与精美界面再度进化
    查看>>
    Manjaro Linux 推出新不可变版本:扩展产品范围,开放社区反馈和测试
    查看>>
    Manual write code to record error log in .net by Global.asax
    查看>>
    map 函数返回的列表在使用一次后消失
    查看>>
    Map 遍历取值及jstl的取值
    查看>>
    Mapbox GL示例教程【目录】-- 已有80篇
    查看>>
    Mapbox TOKML:将GeoJSON转换为KML的开源工具
    查看>>
    Mapped Statements collection already contains value for*
    查看>>
    mapper.xml中mapper找不到问题
    查看>>
    Mapper映射文件传参(数组/集合)与#{}和${} 区别
    查看>>
    mapping文件目录生成修改
    查看>>