Fehler bei dem Edit Feld?



  • Hallo,

    Ich habe folgendes Problem.

    Ich will den Text aus einem Edit Feld auslesen und dann in einer MsgBox ausgeben, nur klappt das nicht. Ich bekomme immer einen (Laufzeit)Fehler (Ungültiger Speicherzugriff).

    hWnd ist das Handle des Eltern Fensters.

    ...

    case WM_CREATE:
    		hWnd3 = CreateWindow("edit", "Test" , WS_CHILD | WS_VISIBLE | WS_BORDER, 200, 50, 100, 20, hWnd,(HMENU) 1, (HINSTANCE) GetWindowLong(hWnd, GWL_HINSTANCE), NULL);
    		hWnd2 = CreateWindow("button", "Übernehmen", WS_VISIBLE | WS_CHILD, 270, 300, 100, 50, hWnd,(HMENU) 2, (HINSTANCE)
    GetWindowLong(hWnd,GWL_HINSTANCE), NULL);
    		return 0 ;
    		break;
    	case WM_COMMAND:
    		switch(LOWORD(wParam))
    		{	
    	        case 2:
    		  LPSTR str;
    		  GetDlgItemText(hWnd3, NULL, str, 10);
    		  MessageBox(NULL, str, "Test", 0);
    		  break;
    		}
    		break;
    

    ...



  • Du musst für str schon Speicher reservieren 😉



  • Könnte mir auch noch jemand verraten wie ich das mache, bin Anfänger.



  • TCHAR str[10];
    


  • Wenn ich das für LPSTR einsetze, kommt zwar keine Fehlermeldung, doch die MessageBox ist leer. Obwohl ich in dem Feld was eingegeben habe.



  • Du musst im 2. Parameter von GetDlgItemText noch die ID übergeben (bei dir 1) und statt hWnd3 musst du das Handle des Parent nehmen (bei dir hwnd) - oder du nimmst anstelle von GetDlgItemText die Funktion GetWindowText (da gibst du dann anstelle von Parent-Handle und ID direkt das Handle des abzufragenden Fensters an) 😉



  • Du hast einige Fehler gemacht:

    1. Du solltest ersteinmal ein bisschen Speicher für den String reservieren.
    z.b.:

    TCHAR String[20]
    

    2. Du solltest danach eine Funktion Namens "GetWindowText" benutzen. (Die Parameterinfos kannst du in der msdn nachgucken). Es gibt auch ein Gegenstück Namens "SetWindowText" mit der du direkt Text setzen kannst. Du kannst natürlich auch Nachrichten schicken, was aber hier zu umständlich wäre. (Diese beiden Techniken funktionieren auch mit "echten" Fenstern. 🙂



  • Danke es geht jetzt.


Anmelden zum Antworten