2
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”存储在“文本”中。我正在绞尽脑汁寻找可能导致这种情况的原因,但我想不出任何东西。

4

1 回答 1

3

您可能正在使用 UNICODE 进行编译,因此您调用的函数使用 UTF-16 文本进行操作。您应该使用宏wchar_t来代替char,甚至更好地使用宏(根据您是在 UNICODE 还是 ANSI 中编译,TCHAR它映射到其中wchar_t之一)。char

于 2013-06-02T04:11:18.620 回答