2013-06-02 2 views
1
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); 

Результат этого кода должен состоять в том, что что-то вроде «Уровень 2» хранится в «тексте». Однако по какой-то причине в конце этого в «текст» сохраняется только «L». Я ломаю себе голову на то, что может быть причиной этого, но я ничего не могу придумать.C++/win32 - только LB_GETTEXT возвращает только один символ

+0

Вы пробовали "wchar_t * text = new wchar_t [l + 1]"? Или изменить проект с Unicode на ANSI? – BlueWanderer

ответ

3

Возможно, вы компилируете в UNICODE, поэтому функции, которые вы вызываете, работают с текстом UTF-16. Вы должны использовать wchar_t вместо char, или даже лучше, макрос TCHAR (который соответствует wchar_tchar в зависимости от того, компилируете ли вы в UNICODE или ANSI).

+0

'CHAR' всегда отображается на' char'. Вместо этого вы думаете о 'TCHAR'. –

+0

@RemyLebeau, Yup. Сожалею; быстрый ввод текста на iPad всегда получает лучшее из меня. Благодарю. –