Text aus edit-fenster auslesen



  • Hallo,
    ich hab wenig erfahrung mit oberflächen programmierung

    ich würde gerne ein programm schreiben das auf der oberfläche ein textfeld hat. der benutzer soll da texte reinschreiben können und diese sollen dann weiterverarbeitet werden:

    LPTSTR lpString = NULL;
    
    case 1:
    
    GetWindowText(textfeld,lpString,50);
    
    MessageBox(NULL,lpString,"1",1);
    break;
    

    alles lässt sich fehlerfrei compilieren . das problem ist das der den text irgentwie nicht richtig einliest und dass da eine unbehandelte ausnahme kommt.



  • versuch es mal so

    int iLenght = GetWindowTextLength(textfeld);
    
    char szWindowText = new char[iLenght+1];
    
    GetWindowText(textfeld,szWindowText ,iLenght);
    
    MessageBox(NULL,szWindowText,"1",1);
    


  • derThomasII schrieb:

    LPTSTR lpString = NULL;
    
    case 1:
    
    GetWindowText(textfeld,lpString,50);
    			
    MessageBox(NULL,lpString,"1",1);
    break;
    

    http://img29.imageshack.us/img29/2500/hahahaohwow.jpg



  • @MasterHacker und was soll daran so lustig sein??

    ____________________________________________________

    also wenn ichs so versuche bekomme ich:

    error C2360: Initialisierung von 'szWindowText' durch 'case'-Marke übersprungen

    error C2360: Initialisierung von 'iLenght' durch 'case'-Marke übersprungen

    den fehler bekomme ich 4-fach . muss ich die variablen oberhalb der case-faelle definieren



  • also der stürtzt jez nicht mehr ab, aber der String steht leider noch nicht richtig drin...



  • int wmId, wmEvent;
    	PAINTSTRUCT ps;
    	HDC hdc;
    	HWND textfeld = NULL;
    	LPTSTR lpString = NULL;
    
    	int iLenght ; 
    
    	char* szWindowText;
    

    ...

    case 1:
    
    	iLenght = GetWindowTextLength(textfeld);
    	szWindowText = new char[iLenght+1];
    	GetWindowText(textfeld,szWindowText ,iLenght);
    	MessageBox(NULL,"",szWindowText,1);
    
    			break;
    

    ...

    case WM_CREATE:
    
    textfeld = CreateWindow("edit","...", WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,300,25,200,30,hWnd, 
    			NULL,((LPCREATESTRUCT) lParam)-> hInstance, NULL);
    

    der kennt das textfeld nicht. das textfeld wird aber in WM_CREATE gebaut. ich habe keine ahnung wie ich das lösen soll



  • Du musst die Variable textfeld entweder global machen oder als static deklarieren.



  • danke, hat geklappt !



  • derThomasII schrieb:

    error C2360: Initialisierung von 'szWindowText' durch 'case'-Marke übersprungen

    error C2360: Initialisierung von 'iLenght' durch 'case'-Marke übersprungen

    LÖSUNG:

    case 1:           
    [b]{[/b]
        iLenght = GetWindowTextLength(textfeld);
        szWindowText = new char[iLenght+1];
        GetWindowText(textfeld,szWindowText ,iLenght);
        MessageBox(NULL,"",szWindowText,1);
    [b]}[/b]      
    break;
    

Anmelden zum Antworten