C++ c++/win32-LB_GETTEXT仅返回一个字符

C++ c++/win32-LB_GETTEXT仅返回一个字符,c++,winapi,listbox,C++,Winapi,Listbox,此代码的结果应该是“文本”中存储类似“Level 2”的内容。然而,由于某些原因,在本文末尾,“text”中只存储了“L”。我绞尽脑汁寻找可能导致这种情况的原因,但我想不出任何原因。您可能是用UNICODE编译的,因此您调用的函数使用UTF-16文本操作。您应该使用wchar\u t而不是char,或者更好的方法是使用TCHAR宏(它映射到char的wchar\u t,具体取决于您是用UNICODE还是ANSI编译)。您试过“wchar\u t*text=new wchar\u\t[l+1]”吗

此代码的结果应该是“文本”中存储类似“Level 2”的内容。然而,由于某些原因,在本文末尾,“text”中只存储了“L”。我绞尽脑汁寻找可能导致这种情况的原因,但我想不出任何原因。

您可能是用UNICODE编译的,因此您调用的函数使用UTF-16文本操作。您应该使用
wchar\u t
而不是
char
,或者更好的方法是使用
TCHAR
宏(它映射到
char
wchar\u t
,具体取决于您是用UNICODE还是ANSI编译)。

您试过“wchar\u t*text=new wchar\u\t[l+1]”吗?或者将项目从Unicode更改为ANSI?
CHAR
始终映射到
CHAR
。你想的是
TCHAR
。@RemyLebeau,是的。很抱歉在iPad上快速打字总是让我感觉最好。谢谢
HWND listBox = GetDlgItem(hDlg, IDC_SCORES_LIST);
LRESULT r = SendMessage (listBox , LB_GETCURSEL, 0, 0);
LRESULT l = SendMessage (listBox , LB_GETTEXTLEN, (WPARAM)r, 0);
char* text = new char [l +1];
SendMessage (listBox, LB_GETTEXT, (WPARAM)r, (LPARAM)text);