editboxen in Schleifen ändern



  • Hallo,
    ich habe Folgendes Problem:

    ich möchte einen String an eine Editbox schicken.
    Die Variable der editbox ist m_edit. Allerdings soll dieser String bei jedem Schleifendurchlauf an die box gesendet werden:

    void CTstDlg::OnButton1() 
    {
    	string name = "a"; //das ist der string, der an die editbox geschickt werden soll
    	for(int a=0;a<10;++a)
    	{
    	    string hilf = name;            //umwandeln von name
    	    CString hilf2(hilf.c_str());   //von string in CString
    
    	    UpdateData(true);
    	    m_edit=hilf2;       //string an die editbox schicken
    	    UpdateData(false);
    
    	    Sleep(100);         //0.1 sek warten
    	    name = name + "a";  //name verändern
    	}
    }
    

    Das Problem dabei ist, dass nur der String des letzten Schleifendurchlaufs an die Box gesendet wird. Hat jemand eine Idee woran das liegen könnte?


  • Mod

    Stimmt nicht. Er wird immer gesendet, nur wird die Anzaige nicht aktualisiert weil Du dem Fenster keine Chance dazu gibt.

    Verwende UpdateWindow!

    BTW: Warum verwendest Du nicht direkt SetWindowText oder SetDlgItemText sondern imm UpdateData?
    Ist in meinen Augen hier ineffektiv.



  • ich habe meinen code jetzt folgendermaßen abgeändert:

    string name = "a"; //das ist der string, der an die editbox geschickt werden soll
    
       for(int a=0;a<10;++a)
       {
          CString hilf(name.c_str());
    
          SetDlgItemText(IDC_EDITBOX,hilf);
          Invalidate();   
          UpdateWindow();
       }
    

    Doch jetzt wird das Fenster nur beim ersten und beim letzten Schleifendurchlauf geändert. Was mache ich falsch?



  • Wunderbar, hatten gerade das gleiche Problem und haben stundenlang dran gearbeitet. Die Lösung hier hat uns gerettet. Danke! 😋


Anmelden zum Antworten