tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
1295
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    smallone smallone ist offline Mitglied Bronze
    Registriert seit
    Mar 2004
    Beiträge
    40
    Hallo zusammen,


    ich habe folgende Funktion (OnValider), die leider nicht das tut, was sie soll (Benutzereingabe aus Eingabefeld auslesen, in Datei schreiben und _direkt_ das Feld wieder leeren)

    OnValider ist mit einem Button "Enter" in meinem Dialog verknüpft.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
    void CDialogeDlg::OnValider() 
    {
     
        UpdateData(TRUE);   // Eingabe des Benutzers übernehmen
     
        // hier schreibe ich den Emfindungswert des vorherigen! Signals in die Datei.
        std::ofstream of ( "Results.txt" , std::ios_base::app ); 
        of  << LPCTSTR( m_sResults )<< std::endl;   //LPCTSTR() gibt den Char-Buffer des CStrings zurück
     
        // danach soll das Anzeigefeld wieder leer sein:
     
        m_sResults = "";
        UpdateData(FALSE);
     
     
    // schnipp - zahlreiche weitere Funktionen folgen hier.... //
     
     
    }


    Leider funktioniert das sofortige "Überschreiben" der alten Eingabe mit m_sResults = " " nicht.

    Es scheint daran zu liegen, daß mein gesamter Dialog nicht oft genug "neu gezeichnet" wird und somit die Anzeigen "upgedated" werden.


    Kann mir ein Programmierer eine Lösung dazu bieten ?

    Vielen Dank,
    Gruß
    BEN
     

  2. #2
    Thomas Kuse Thomas Kuse ist offline Mitglied Rubin
    Registriert seit
    Aug 2001
    Beiträge
    1.411
    Bist du sicher, dass du dieses eigenartige UpdateData brauchst?

    Um diese ganze Geschichte mit der fehlenden und zu späten aktualisierung habe ich immer nur mit Control-Membervariablen gearbeitet, über die ich dann die Steuerelemente direkt ansprechen kann.

    Z.B. einen Text eines Buttons zu ändern nicht mehr per Membervariable plus UpdateData sondern mit
    Code :
    1
    
    m_controlVariable.SetWindowText("test");
    Das sollte natürlich nicht nur bei Buttons und Titeln der Fall sein, sondern für jedes erdenkliche Steuerelement gelten.

    Lange Rede kurzer Sinn, versuch mal Deine Programme unabhängig von UpdateData(TRUE/FALSE) zu schreiben.
     

  3. #3
    Registriert seit
    Jul 2003
    Ort
    Duisburg (NRW)
    Beiträge
    1.788
    Laut Joseph M. Newcomer ist UpdateData() sowieso nicht das Wahre. Die Gründe habe ich gerade nicht parat, aber sie waren sehr überzeugend (habe den Artikel vor ca. zwei Jahren gelesen und auch vorher noch nie UpdateData() verwendet). Lest selber nach unter UpdateData -- Segen oder Teufelswerk oder so ähnlich
     
    Chor: "Wir sind der Chor, und wir stimmen zu. Wir stimmen zu, wir stimmen zu, wir stimmen zu."

  4. #4
    smallone smallone ist offline Mitglied Bronze
    Registriert seit
    Mar 2004
    Beiträge
    40
    Hallo zusammen,

    stimmt, die UpdateData() funktioniert nicht toll, dadurch ist ja meine Frage aufgekommen.

    Mein Problem habe ich mitlerweile durch eine komplette Umgestaltung meiner Funktionen lösen können.

    Das nächste Mal werd ich dann wohl auch die Finger davon lassen und die Beispiele aus Kachelators Link verwenden !

    Danke für Eure Hilfe !

    Grüße BEN
     

Ähnliche Themen

  1. C++, Speichern unter Dialog aktualisieren
    Von sand13r im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 15.11.07, 15:06
  2. UpdateData und CThread
    Von JoachimJogi im Forum VisualStudio & MFC
    Antworten: 2
    Letzter Beitrag: 04.06.07, 10:12
  3. Unterschied zwischen UpdateData(false) und UpdateData(true)
    Von nammder im Forum VisualStudio & MFC
    Antworten: 2
    Letzter Beitrag: 19.10.06, 09:21
  4. OnPaint im ersten Dialog aktualisieren?
    Von Ron-calli im Forum VisualStudio & MFC
    Antworten: 5
    Letzter Beitrag: 28.10.04, 15:29
  5. Updatedata und Refresh
    Von RuNDUMiEzE im Forum VisualStudio & MFC
    Antworten: 2
    Letzter Beitrag: 08.10.04, 14:54