Mfc 在用户键入时向CEdit添加建议的文本

Mfc 在用户键入时向CEdit添加建议的文本,mfc,cedit,Mfc,Cedit,在我的MFC应用程序中,我试图通过建议用户键入文本来向用户提供帮助 用户正在键入的文本保留为已键入的文本,并选择结尾处的建议文本,以便用户可以在不需要的情况下直接单击“删除”,或者他们可以继续键入,并且我建议的测试越来越接近他们想要的测试 我的代码(在CEdit控件的更改处理程序中)如下所示:- [Code to retrieve the current text] [Code to get proposed text from my database back end] (The user

在我的MFC应用程序中,我试图通过建议用户键入文本来向用户提供帮助

用户正在键入的文本保留为已键入的文本,并选择结尾处的建议文本,以便用户可以在不需要的情况下直接单击“删除”,或者他们可以继续键入,并且我建议的测试越来越接近他们想要的测试

我的代码(在CEdit控件的更改处理程序中)如下所示:-

[Code to retrieve the current text]

[Code to get proposed text from my database back end]

(The user's text and the trailing extra proposed text are now in m_Eqpt)

m_EqptCtrl.SetWindowTextW(m_Eqpt);
m_EqptCtrl.SetSel(nTextLength, m_Eqpt.GetLength());

(nTextLength is the length of the text the user entered)
这在用户输入时效果很好,但是如果用户返回空格或hilights并删除文本,我的代码会重复地将建议的文本添加回,此时应该将其保留


我不知道如何确定用户是否删除了我的建议文本。有人解决过类似的问题吗?

Shell自动完成功能是解决问题的一种方法吗

  • 这里是外壳代码的MSDN

  • 这里是来自的另一个代码示例,它应该使用与您类似的方法


  • 您应该能够通过捕获WM_KEYDOWN并检查编辑字段是否具有焦点来检测编辑字段上的delete键。设置一个标志以表明用户已删除您的建议文本应该会有所帮助。

    不要重新发明轮子。Windows已经实现了。ATL提供了自动完成功能!我过度疲劳的大脑不认为我在做什么。。。我打赌有一百万的搜索点击率。