私にはおそらく簡単な問題がありますが、まだそれほど問題はありません。私はWin32/C++でリストボックスを使用しています。リストボックスから選択したテキストを取得するときに返される文字列はちょうどゴミです。構造体などのハンドルですか?Win32 LB_GETTEXTはガベージを返します
以下はコードと私が得るものの例です。
std::string Listbox::GetSelected() {
int index = -1;
int count = 0;
count = SendMessage(control, LB_GETSELCOUNT, 0, 0);
if(count > 0) {
index = SendMessage(control, LB_GETSEL, 0, 0);
}
return GetString(index);
}
std::string Listbox::GetString(int index) {
int count = 0;
int length = 0;
char * text;
if(index >= 0) {
count = GetItemCount();
if(index < count) {
length = SendMessage(control, LB_GETTEXTLEN, (WPARAM)index, 0);
text = new char[length + 1];
SendMessage(control, LB_GETTEXT, (WPARAM)index, (LPARAM)text);
}
}
std::string s(text);
delete[] text;
return s;
}
GetItemCountだけです。リストボックスに現在あるアイテムの数だけを取得します。
私はリストボックスから奪った文字列は、「テスト文字列」であり、それはすべてのヘルプがappericatedされる¨±é»TZA
を返され、感謝。
私はGetStringが正しい文字列を返すように、GetSelected関数に絞り込みました。
ANSIまたはUNICODE用にコンパイルしていますか? –
また、SendMessageの返品は何ですか?また、期待されるLBメッセージとはどのように比較されますか? –
GetSelectedは何を返しますか?どのように絞り込んだのですか? –