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”。我绞尽脑汁想要造成这种情况,但我想不出任何事情。
答案 0 :(得分:3)
您可能正在编译UNICODE,因此您调用的函数使用UTF-16文本。你应该使用wchar_t
代替char
,或者甚至更好的TCHAR
宏(映射到wchar_t
的{{1}},具体取决于你是否在UNICODE中编译或ANSI)。