3
我有一個問題,這很可能是一個簡單的問題,但對我來說還不是一個問題。我在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就是這麼做的。它只是獲取列表框中當前項目的數量。
我是從列表框抓取的字符串是「測試字符串」和它返回¨±é»TZA
任何幫助appericated,謝謝。
好吧,我縮小到我的GetSelected函數爲GetString返回正確的字符串。
你正在爲ANSI或UNICODE編譯嗎? – 2009-04-10 22:49:15
另外,SendMessage的返回是什麼,它與預期的LB消息相比如何? – 2009-04-10 22:50:01