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

このコードの結果は、「レベル 2」のようなものが「テキスト」に格納されるはずです。しかし、この最後はなぜか「text」に「L」しか格納されていません。何が原因なのか頭を悩ませていますが、何も思いつきません。

4

1 に答える 1

3

おそらく UNICODE でコンパイルしているので、呼び出している関数は UTF-16 テキストで動作します。wchar_tの代わりにchar、またはより良いTCHARマクロを使用する必要があります ( UNICODE でコンパイルするか ANSI でコンパイルするかwchar_tに応じて、 のいずれかにマップされます)。char

于 2013-06-02T04:11:18.620 に答える