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

时间:2013-06-02 04:04:08

标签: c++ winapi listbox

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);

此代码的结果应该是“Level 2”之类的内容存储在“text”中。但是由于某种原因,在“文本”中只存储“L”。我绞尽脑汁想要造成这种情况,但我想不出任何事情。

1 个答案:

答案 0 :(得分:3)

您可能正在编译UNICODE,因此您调用的函数使用UTF-16文本。你应该使用wchar_t代替char,或者甚至更好的TCHAR宏(映射到wchar_t的{​​{1}},具体取决于你是否在UNICODE中编译或ANSI)。