String Win32 ComboBox中未显示Unicode字符串

String Win32 ComboBox中未显示Unicode字符串,string,winapi,unicode,combobox,String,Winapi,Unicode,Combobox,我正在Windows Vista上创建WC_COMBOBOXEX并向其添加字符串,但它们不会显示在控件中。如果我使用带有CB_ADDSTRING的旧WC_组合框,同样的字符串显示得很好 我使用ICC_USEREX_类调用InitCommonControlsEx,并使用CreateWindowEx创建comboboxex,样式为WS|u CHILD | WS|u CLIPSIBLINGS | CBS|u SIMPLE | CBS|u SORT | CBS|u Hastrings无扩展样式。我正在使

我正在Windows Vista上创建WC_COMBOBOXEX并向其添加字符串,但它们不会显示在控件中。如果我使用带有CB_ADDSTRING的旧WC_组合框,同样的字符串显示得很好

我使用ICC_USEREX_类调用InitCommonControlsEx,并使用CreateWindowEx创建comboboxex,样式为WS|u CHILD | WS|u CLIPSIBLINGS | CBS|u SIMPLE | CBS|u SORT | CBS|u Hastrings无扩展样式。我正在使用

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添加到一个rebar控件中,但我在某个地方读到comboboxex比旧的combobox工作得更好


谢谢。

如果您从MSDN发送CBEM_setUnicode地址,是否有帮助?

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

CBS_SIMPLE
CBS_DROPDOWN
CBS_DROPDOWNLIST
WS_CHILD

因此,CBS_SORT和CBS_hastring可能会弄乱样式位。

是的,定义了UNICODE,相同的字符串可以与普通的旧WC_组合框配合使用