Visualizzazione dei risultati da 1 a 1 su 1
  1. #1
    Utente di HTML.it L'avatar di MrX87
    Registrato dal
    Jun 2007
    Messaggi
    500

    [C++ - win32] Problema GetText from ListBox

    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
    Ultima modifica di MrX87; 03-11-2013 a 20:55
    "Non può piovere per sempre" Il Corvo
    Forza Vigor!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.