Malwieder die Editfenster =D



  • Hi Leute, ich habe wieder ein Problem mit einem Editfenster.
    Und zwar: Als erstes wird aus 2 Editfenster der Text in die beiden Char-Array
    "Anz"
    und "Stellen"
    eingelesen, die werden dann in ein string umgewandelt, die dann in einen stringstream und dass dann wieder in einen int. Dann wird eine eigen-erstellte Funktion "generateChars" aufgerufen, die Zufallszahlen generiert und diese in dem String "Generated" speichert. ABER wenn ich dann SetWindowText auf das Editfenster mache in das die generierten Zahlen rein sollen, dann kommt da "41".
    Immer ^^ Also erst mal der erste Abschnitt:

    iLength = GetWindowText(hwndButton[1],(LPWSTR)Anz, 10);
    				iLength = GetWindowText(hwndButton[2],(LPWSTR)Stellen, 10);
    
    				string			sAnz(Anz);
    				string			sStellen(Stellen);
    			    stringstream	Str;
    
    				Str << sAnz;
    				Str >> iAnz;
    				Str << sStellen;
    				Str >> iStellen;
    
    				GenerateChars(iAnz, iStellen);
    
    				SetWindowTextW(hwndFoundButton[1], (LPCWSTR)Generated.c_str());
    

    Und jetzt die Funktion "GenerateChars":

    int GenerateChars(int iAnz, int iStellen)
    {
    	 int				generatedNumber;
    	 ostringstream		oStr; 
    
    	for(int i = 0; i < iAnz;i++)
    	{
    
    		generatedNumber = rand() % iStellen;
    		oStr << generatedNumber;
                      //Generated ist ein std::string
    		Generated += "\n";
    		Generated += oStr.str();
    
    	}
    	return 0;
    }
    

    Kann jemand den Fehler entdecken wieso die Zahlen entweder nicht richtig generiert werden oder wieso SetWindowText oder sonst was nicht geht?
    MFG!



  • Da sag mir noch mal einer C++ wär kompfortabel 😃
    Sicher dass du den stringstream nicht leeren musst? Weiß gerade nicht mehr so genau wie das war..


  • Mod

    Killur schrieb:

    SetWindowTextW(hwndFoundButton[1], (LPCWSTR)Generated.c_str());
    

    ...

    Kann jemand den Fehler entdecken wieso die Zahlen entweder nicht richtig generiert werden oder wieso SetWindowText oder sonst was nicht geht?
    MFG!

    Und jetzt frage Dich genau warum Du hier ein cast brauchst. Du hattest vermutlich einen Compilerfehler bekommen und hattest einfach gedacht ein cast wird es schon richten?

    Du verwendest also die Unicode Version von SetWindowText...
    Darf ich fragen warum?
    Und wenn Du Unicode benutzt, warum benutzt Du dann die ANSI Version von std::stringund nicht auch Unicode?
    Warum bleibst Du nicht einfach bei der ANSI Version?

    Fragen über Fragen... 🤡



  • Mit

    SetWindowTextA(hwndFoundButton[1],Generated.c_str());
    

    geht es auch nicht..



  • wenn ich mich recht entsinne ist SetWindowTextW die Unicode Funktion



  • Ich hab jetzt mal rumprobiert mit der ANSI version von SetWindowText, aber es funktioniert irgendwie nicht....



  • was für einstellungen hast du unter eigenschaften in deinem project?
    multi-byte o. unicode zeichensatz verwenden?



  • ka ^^ auf jedenfall hab ich es mit den Unicoed Versionen und den ANSI Versionen probiert aber es funktioniert nicht. Liegt es vllt an rand()?
    Muss man da nach dem % den ANSI Code ein fügen oder gehen auch normale Zahlen?



  • wenn in deinen projecteinstellungen Unicode eingestellt ist (was standartmäsig der fall ist) und du arbeitest mit multi-byte (ANSI) wir es nicht klappen. 🕶


  • Mod

    Was hat das mit der eingestellten Projektform zu tun. On Unicode oder MBCS, der oben stehende Code ist immer faslch. SetWindowTextW ist immer Unicode std::string ist immer MBCS und SetWindowTextA immer MBCS...

    Von TCHAR Notation sehe ich hier nichts und nur die und die Standard-WinAPI Namen werden durch die Projekteinstellungen beeinflusst.


Anmelden zum Antworten