我的对话框中有一个简单的可编辑组合框。
它在下拉列表中有几个预定义的文本值。其中一个条目是:
"Test 123"
组合框已映射到CString
变量m_strNotes
。
如果我这样做:
m_strNotes = _T("Test");
UpdateData(FALSE);
我发现组合框最终以"测试123"选择!
相反,我必须使用m_cbTextValues.SetWindowText(_T("Test"));
并使用m_strNotes
变量进行旁路。
为什么我必须这样做?由于CComboBox
可以编辑,因此文本不必位于下拉列表中。因此,当我使用前一种方法时,为什么它只是设置编辑文本而不是尝试在下拉列表数据中找到合适的匹配?
答案 0 :(得分:2)
这是您使用DDX_CBString
获得的预期行为,它为选择执行前缀字符串比较。而是使用DDX_CBStringExact
进行完全匹配。