У меня есть проблема, которая, скорее всего, простая, но, тем не менее, проблема для меня. Я использую Listbox в Win32 / C ++, и когда я получаю выделенный текст из моего списка, возвращаемая строка является просто мусором. Это дескриптор структуры или аналогичный?
Ниже приведен код и пример того, что я получаю.
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 просто делает это. Он просто получает количество элементов, находящихся в данный момент в списке.
Строка, которую я извлекал из списка, это «Тестовая строка», и она вернулась ¨ ± é »Tzã
Любая помощь определена, спасибо.
Хорошо, я сократил ее до своей функции GetSelected, поскольку GetString возвращает правильную строку.