更新可编辑组合的文本值

Issue updating the text value for a editable combo

我的对话框中有一个简单的可编辑组合框。

它在下拉列表中有几个预定义的文本值。其中一项是:

"Test 123"

组合框映射到 CString 变量 m_strNotes

如果我这样做:

m_strNotes = _T("Test");
UpdateData(FALSE);

我发现组合框最终选择了 "Test 123"!

相反,我必须使用 m_cbTextValues.SetWindowText(_T("Test")); 并使用 m_strNotes 变量绕过。

为什么我必须这样做?由于 CComboBox 可以编辑,因此文本不必位于下拉列表中。所以当我使用前一种方法时,为什么它不只设置编辑文本而不尝试在下拉列表数据中找到合适的匹配项?

这是您使用 DDX_CBString 获得的预期行为,它为选择进行前缀字符串比较。而是使用 DDX_CBStringExact 进行精确匹配。