Ciao a tutti ragazzi, ho un problema con la gestione di una ListBox in C++ in WIN32. Posto sotto il codice di una funzione che dovrebbe prendere il testo presente nelle varie righe delle listbox e stamparle su un MessageBox:
codice:
...
TCHAR command[MAXTEXT];
HWND g_hwndListBox; // handle listbox
HWND hwnd; // handle della finestra principale
...
void lunchCommand ( HWND hwnd, TCHAR* command ) {
if ( command_set == 0 ) {
wstring ws( command );
MessageBox(hwnd, ws.c_str(), _T("Attenzione!!"), MB_OK );
}
else {
// recupero il numero di elementi della listbox
int nItems = SendMessage(g_hwndListBox,LB_GETCOUNT,0,(LPARAM)0);
int i;
for ( i=0; i<nItems; i++ ) {
// pulisco il contenuto di command
ZeroMemory(command, MAXTEXT);
// seleziono la riga i della listbox
SendMessage(g_hwndListBox,LB_SETCURSEL,i,(LPARAM)0);
int index = SendMessage(g_hwndListBox,LB_GETCURSEL,0,(LPARAM)0);
wstring str; //uso le wstring perche voglio usare caratteri UNICODE
wstringstream ss;
ss<<index;
str=ss.str();
MessageBox(hwnd, str.c_str(), _T("Attenzione!!"), MB_OK );
// get text of selected item at position index
SendMessage(g_hwndListBox,LB_GETTEXT,(WPARAM)index,(LPARAM)&command);
wstring ws2( command );
MessageBox(hwnd, ws2.c_str(), _T("Attenzione!!"), MB_OK );
}
}
return;
}
Tutto funziona bene...tranne la:
codice:
SendMessage(g_hwndListBox,LB_GETTEXT,(WPARAM)index,(LPARAM)&command);
wstring ws2( command );
MessageBox(hwnd, ws2.c_str(), _T("Attenzione!!"), MB_OK );
che a volte si pianta e come se desse seg fault....comunque compare la finestra di chiusura forzata dell'applicazione e crasha tutto!!!
Molto probabilmente sbaglio nella conversione da TCHAR a wstring....
qualcuno sa darmi una mano...grazie mille