Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di skjobax
    Registrato dal
    Jan 2010
    Messaggi
    569

    [C++] Ottenere valore di un controllo Edit

    Comincio col dire che ho esperienza 0 in C++ con GUI Win32 (quindi non visual c++) e utilizzo Code::blocks come IDE..
    Se dico scemenze ditemelo...

    Allora, ho visto su Internet questo codice:
    codice:
    case IDC_BTN_TEST:
        // MessageBox(hwndDlg, "You clicked \"Test\" button!", "Information", MB_ICONINFORMATION);
        char* szString;
        GetDlgItemText(hwndDlg, IDC_EDIT1, szString, sizeof(char));
        MessageBox(hwndDlg, szString, "Editbox content", MB_ICONINFORMATION);
    Sia idc_btn_test che edit1 esistono nel resource.rc... comunque, quando provo ad eseguire l'applicazione, premendo su Test va in blocco (sia che il campo sia vuoto che scritto), facendo uscire il messaggio "L'applicazione Test C++ non risponde":
    codice:
    Process terminated with status -1073741819 (0 minutes, 13 seconds)
    Qualche idea?
    A volte la soluzione a un problema è sempre la più semplice...

  2. #2
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,346
    Se vuoi usare un'array dinamico dovresti prima avere la lunghezza del testo con WM_GETTEXTLENGTH e crearti l'array di char e poi prenderti il testo.
    Nel tuo programma usi un puntatore nn inizializzato e crea problemi
    Per gli Spartani e Sparta usa spartan Il mio github

  3. #3
    Utente di HTML.it L'avatar di skjobax
    Registrato dal
    Jan 2010
    Messaggi
    569
    Ripeto che sono totalmente agli inizi e qualcosa potrebbe sfuggire...

    Comunque grazie dell'aiuto, provvederò a modificare il codice e ti farò sapere
    A volte la soluzione a un problema è sempre la più semplice...

  4. #4
    Utente di HTML.it L'avatar di skjobax
    Registrato dal
    Jan 2010
    Messaggi
    569
    Non riesco a capire come funziona!!
    Nella pagina del MSDN che hai linkato c'è scritto che bisogna usare DefWindowProc con wparam e lparam settati a 0 ma non ho capito come...
    codice:
    // ????
    char textln = DefWindowProc(hwndDlg, WM_GETTEXTLENGTH, 0, 0);
    
    char szString[textln]; //???
    GetDlgItemText(hwndDlg, IDC_EDIT1, szString, sizeof(char));
    MessageBox(hwndDlg, szString, "Editbox content", MB_ICONINFORMATION);
    return TRUE;
    Se solo trovassi una buona guida...
    A volte la soluzione a un problema è sempre la più semplice...

  5. #5
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,346
    codice:
    int len;
    char *string;
    
    len = SendDlgItemMessage(hwndDlg,IDC_EDIT,WM_GETTEXTLENGTH,0,0);
    string = new char[len+1]
    GetDlgItemText(hwndDlg,IDC_IEDT1,string,len);
    grosso modo il tuo codice dovrebbe essere questo.
    Per gli Spartani e Sparta usa spartan Il mio github

  6. #6
    Utente di HTML.it L'avatar di skjobax
    Registrato dal
    Jan 2010
    Messaggi
    569
    Grazie, funziona benissimo
    A volte la soluzione a un problema è sempre la più semplice...

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 © 2024 vBulletin Solutions, Inc. All rights reserved.