SOLVED: Variablen ausgeben und eingeben mit SetWindowText() bzw. GetWindowText()



  • Hallo,

    Ich versuche seit Tagen eine einfache Integer Variable mit dem Befehl SetWindowText in einem Windows Fenster auszugeben.
    relativ logisch ist, dass die Funktion einen String erwartet, allerdings ist mir nicht gelungen die Variable in einen String umzuwandeln.

    Habe schon etliche Codebeispiele probiert, bekomme aber grundsätzlich die Meldung Expected LPWSTR.

    Ich benutze Visual Studio 2017 und mit einem TCHAR kann ich mir zumindest den Text per GetWindowText holen, dass funktioniert einwandfrei.
    Oder per Text(""); Funktioniert es auch.

    Aber sobald es darum geht den Text innerhalb des Quellcodes zu definieren mit einem String geht alles schief. Strings, CString oder sonstwas nimmt er nicht, da sonst besagte Fehlermeldung erscheint.

    Wie kann ich einen String basteln der in die Funktion passt?



  • Dieser Thread wurde von Moderator/in Arcoth aus dem Forum C++ (alle ISO-Standards) in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • int i = 42;
    std::string s = std::to_string(42);
    
    SetWindowText(hText, s.c_str());
    

    Edit: bzw. für wstring:

    int i = 42;
    std::wstring s = std::to_wstring(42);
    
    SetWindowTextW(hText, s.c_str());
    


  • mit sprintf bzw. wsprintf kannst du formatiert in strings schreiben.



  • Sorry, erst einmal für's falsch posten.

    int i = 42; 
    std::wstring s = std::to_wstring(42); 
    
    SetWindowTextW(hText, s.c_str());
    

    Hat funktioniert! Danke, probiere schon seit Tagen rum 😃 👍

    Gibt es auch eine einfache Möglichkeit das wie zurück zu zubauen?

    TCHAR szText[256];
    
    GetWindowText(hEditBox, szText, 256);
    

    Wenn ich meine Variable da direkt reinschreiben krieg ich einen Konvertierungs Error, GetWindowText(hEditBox, i, sizeof(int));



  • wsscanf bzw. die entsprechende methode aus der stl um einen string in eine zahl umzuwandeln.



  • Es lässt sich complilieren, allerdings funktioniert es nicht.

    GetWindowText(hEditBoxA[0], szText, 80);
    			wscanf_s(szText,"%d", &i);
    
    			std::wstring zahl = to_wstring(i);
    
    			SetWindowText(hTextA, zahl.c_str());
    

    Ich hab mir meinen eingegeben String in eine wchar_t gespeichert und versucht sie mit wscanf_s eine interger Variable auszulesen und diese dann anschließen versucht wieder auszugeben, um zu sehen ob alles geklappt hat.

    Bekomme leider nur völlig Random irgendwelche Zahlen geliefert. 😕

    Nun funktionierts habe:

    GetWindowText(hEditBoxA[0], szText, 80);
    
    			int i = _ttoi(szText);
    
    			std::wstring zahl = to_wstring(i);
    

    benutzt.

    Danke für eure Antworten, habt mir sehr weitergeholfen 🙂 🙂


Log in to reply