Unicode字符串未在Win32 ComboBoxEx中显示

时间:2011-07-15 02:08:17

标签: string winapi unicode combobox

我在Windows Vista上创建WC_COMBOBOXEX并为其添加字符串,但它们不会显示在控件中。如果我使用旧的WC_COMBOBOXCB_ADDSTRING,则相同的字符串会显示正常。

我使用ICC_USEREX_CLASSES调用InitCommonControlsEx并使用样式为WS_CHILD|WS_CLIPSIBLINGS|CBS_SIMPLE|CBS_SORT|CBS_HASSTRINGS的CreateWindowEx创建组合框(没有扩展样式)。我正在使用

添加字符串
COMBOBOXEXITEM cbem = {0};
cbem.mask    = CBEIF_TEXT;
cbem.iItem   = -1;
cbem.pszText = L"hello";
SendMessage(hWnd_, CBEM_INSERTITEM, 0, TOLPARAM(&cbem));

组合框显示为空,但是当我在editcontrol / listbox中上下移动光标时,有时会看到有趣的块字符。

最后,我想将它作为CBS_DROPDOWNLIST添加到钢筋控件中,但是我在某处读到了comboboxex在那里的工作效果比旧的组合框好得多。

感谢。

2 个答案:

答案 0 :(得分:0)

如果您发送CBEM_SETUNICODEFORMAT会有帮助吗?

答案 1 :(得分:0)

来自MSDN:

ComboBoxEx控件仅支持以下ComboBox样式:

CBS_SIMPLE
CBS_DROPDOWN
CBS_DROPDOWNLIST
WS_CHILD

所以CBS_SORT和CBS_HASSTRINGS可能会搞乱样式位。