Problem mit GetWindowText



  • hi,
    ich habe vor nen kleinen übersetzer zu schreiben und mache mich im Vorfeld mit allen unbekannten Funktionen vertraut. Dazu gehört auch GetWindowText().
    Ich bin jetzt soweit das mein kompiler nicht mehr reklamiert und FAST alles klappt wie es soll. Wenn ich in mein Eingabefeld schreibe und dann auf den button drücke sollte der Text ausgelesen und ausgegeben werden und da ist das problem ich sehe nämlich nix.

    case WM_CREATE:
                 hwndEdit1= CreateWindow (TEXT ("edit"), NULL, WS_CHILD | WS_VISIBLE | WS_BORDER | ES_LEFT | ES_AUTOVSCROLL , 0, 0, 200, 100, hwnd, (HMENU) ID_EDIT1,((LPCREATESTRUCT) lParam)-> hInstance, NULL) ;
    			 hwndButton= CreateWindow ( TEXT("button"),TEXT("Übersetzen"), WS_CHILD | WS_VISIBLE ,45,45,100,40,hwnd,(HMENU) 1,((LPCREATESTRUCT) lParam)-> hInstance, NULL) ;
    			 return 0;
    
    		case WM_KEYDOWN:
    			switch(wParam)
    			{
    			case VK_RETURN:
    			case VK_SPACE:
    				InvalidateRect(hwnd,NULL,TRUE);
    				break;
    			}
    			return 0;
    
    		case WM_SIZE:
                 MoveWindow (hwndEdit1, 45, 10, 200, 20 ,TRUE) ;
    			 MoveWindow (hwndButton, 45, 45, 100, 40 ,TRUE) ;
                 return 0;
    
            case WM_PAINT:
                 hdc = BeginPaint (hwnd, &ps);
                 GetClientRect (hwnd, &rect);
    
    				 TextOut (hdc, 0, 10, TEXT("Wort:"),5);
    				 TextOut (hdc, 200, 200, test.lpString, 5);
    
                 EndPaint (hwnd, &ps);
    
                 return 0;  
    
    		case WM_COMMAND:
    			GetWindowText(hwndEdit1,test.lpString,5);
    			InvalidateRect(hwnd,NULL,TRUE);
    			return 0;
    

    kann mir das jemand erklären?? mfG noha



  • die Struktur sieht wie folgt aus:

    static struct
    {
    	int i;
    	LPTSTR lpString;
    }test;
    


  • ähm... was ist denn genau dein problem eigentlich, irgendwie bezieht sich der quellcode-aussschnitt auf nichts konkretes, eine riesige ansammlung von irgendwelchen fensterereignissen... was genau davon soll ich mir denn durchlesen? 🤡
    Was ich nicht verstehe: wie soll da überhaupt was auf eingaben richtig reagieren, wenn bei WM_COMMAND überhaupt gar nix, 0 fallunterscheidungen gemacht werden? WM_COMMAND wird eigentlich... ziemlich oft geschickt^^ nicht nur beim drücken _dieser einer schaltfläche_ die du da hast...

    tipp: schieb den thread mal ins WINAPI forum, da haben die leute n bisschen mehr ahnung davon, hier haben sich nicht unbedingt die WINAPI spezialisten versammelt 😉



  • es ist vorläufig egal wann genau WM_COMMAND gesendet wird hauptsache spätestens beim Knopfdruck. Das Problem ist es das ich selbst beim Knopfdruck nicht den eingegebenen Text sehe (nur im Editfenster) obwohl ich ihn mit TextOut anzeigen lasse.



  • Mal ne ganz dumme vermutung:
    Bist du dir sicher, dass es am GetWindowText liegt? Wenn ich mir so die koordinaten bei textout anschaue, dann fällt mir auf, dass dein lpString ganz woanders ausgegeben wird, als "Wort:"... ist es überhaupt noch im fenster? hast du das mit irgendeinem anderen string ausprobiert?

    vorschlag: füg noch ein "static" hinzu, und lass den text direkt in WM_COMMAND mit SetWindowText(..., your_static_window_handle, ... ) ausgeben...



  • ziel soll es sein das Textfeld auszulesen und dann den inhalt im Fenster(nicht im Textfeld!) auszugeben. So wie ich den post von Andrey verstehe hat er mein "Problem" nicht verstanden 🙂



  • Textfeld auszulesen und dann den inhalt im Fenster(nicht im Textfeld!) auszugeben

    ne, ich hab eigentlich eher sowas gemeint: Textfeld einlesen, in ein static-Label wieder ausgeben...
    Einfach um problem besser einzugrenzen:
    wenn's bei der eingabe (GetWindowText) hackt, wird auch im label nix zu sehen sein.
    Verarbeitet wird da erstma gar nix->entfällt als fehlerquelle
    Wenn es dann aber mitm Label klappt, dann muss man sich eben die Ausgabe besser anschauen: bist du dir sicher, dass dein fenster mindestens 250 einheiten hoch und 300 breit ist? 😃

    So wie ich den post von Andrey verstehe hat er mein "Problem" nicht verstanden

    dein größtes problem ist nach wie vor, dass du im C++ subforum bist, anstatt im WinAPI forum nachzufragen, die hätten dein problem sicher schon nach 37.8 sekunden gelöst... 🤡



  • ich hab schon im WinAPI forum gefragt aber ihr seid einfach schneller 😃 😉
    und mein fenster ist auf jeden Fall groß genug hab ich schon kontrolliert



  • Ich habe jetzt ein 2. Editfenster gebastelt und hole mir den Text aus dem 1. um ihn im 2. darzustellen aber das funzt auch nicht.



  • Hast du das programm schon im einzelschrittmodus durch den debugger gejagt? Hast du die veränderungen deines lpString pointers beobachtet? Wie siehts aus?

    wenn wirklich nix klappt=>
    dann her mit dem ganzen code... poste hier einfach mal alles, was irgendwie damit in verbindung steht. unter anderem wär's gut zu sehen wo diese test. variable angelegt wird usw... Also, ich zumindest, kann da keinen fehler entdecken, vielleicht versteckt der sich sonst irgendwo? 😕




Log in to reply