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:
Tutto funziona bene...tranne la: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; }
che a volte si pianta e come se desse seg fault....comunque compare la finestra di chiusura forzata dell'applicazione e crasha tutto!!!codice:SendMessage(g_hwndListBox,LB_GETTEXT,(WPARAM)index,(LPARAM)&command); wstring ws2( command ); MessageBox(hwnd, ws2.c_str(), _T("Attenzione!!"), MB_OK );
Molto probabilmente sbaglio nella conversione da TCHAR a wstring....
qualcuno sa darmi una mano...grazie mille

Rispondi quotando