GetWindowText Problem!



  • Hallo,

    ich habe ein Problem mit der Funktion GetWindowText. Trotz stundenlanger suche bei Google, hier im Forum und der MSDN wende ich mich nun direkt an euch 😉 habe es wirklich versucht es selbst zu lösen aber es will einfach nicht gelingen.

    LPSTR name[20];
    
    int tmp=GetWindowTextLength(hWndName);
    
    GetWindowText(hWndName, name[tmp], tmp);
    
    SetWindowText(hWndAsg,name[tmp]);
    

    hWndName und hWndAsg sind meine Fenster. in hWndName steht "Mustermann" und soll in hWndAsg ausgegeben werden. Der Code ist bestimmt etwas dirty aber es geht mir erstmal nur um die Funktion. danke!!!



  • LPSTR name[20]; 
    [...]
    name[tmp]
    

    Darüber solltest du noch mal nachdenken 😉



  • DrWho schrieb:

    LPSTR name[20]; 
    [...]
    name[tmp]
    

    Darüber solltest du noch mal nachdenken 😉

    wie gesagt....es ist noch etwas dirty 😛



  • Es ist einfach falsch! Du deklarierst ein Array aus 20 Zeigern, was du aber vermutlich haben möchtest, ist ein TCHAR Array.
    Zudem übergibst du mit name[tmp] einen nicht initialisierten Zeiger und riskierst zudem die Grenzen des Arrays zu überschreiten.



  • ok...hab nun doch eine Lösung gefunden

    char Name[20];
    
    int tmp=GetWindowTextLength(hWndName);
    
    GetWindowText(hWndName,(LPSTR) name, tmp);
    
    SetWindowText(hWndAsg,(LPCSTR)name);
    

    darf man das so machen oder gibs da eine bessere Lösung?



  • Wenn du GetWindowTextLength() benutzt, musst du auch ein entsprechend großen Puffer zur Verfügung stellen. Andernfalls übergibt die Größe dein Arrays (=20)


  • Mod

    Außerdem:
    Was sollen die ganzen Casts?



  • ok alle casts sind verschwunden und in der variable steht nun auch mustermann. so weit, so gut.

    neues Problem. ich möchte nun mit SetWindowText() nicht nur einen string ausgeben sondern gleich mehrere. geht das überhaupt oder muss man die stings vorher aneinander reihen irgendwie?



  • dinnas87 schrieb:

    ok alle casts sind verschwunden und in der variable steht nun auch mustermann. so weit, so gut.

    neues Problem. ich möchte nun mit SetWindowText() nicht nur einen string ausgeben sondern gleich mehrere. geht das überhaupt oder muss man die stings vorher aneinander reihen irgendwie?

    SetWindowText() setzt den Text der Fenstertitlebar neu. Wenn du mehrere Strings als ganzen setzen willst, dann musst du sie vorher konkatenieren.



  • danke, habe auch schon eine Lösung gefunden hier im Forum. Kann geschlossen werden!!


Anmelden zum Antworten