Ansichten / Dialoge immer aktualisieren ?



  • Hallo Leute,

    ich habe da mal wieder 2 Fragen.

    Ich Überprüfe ein File und möchte und trage dies in die Datenbank.
    Jetzt möchte ich
    1. In einem Dialog werden ein paar einstellungen gemacht.
    Dort möchte ich, wenn der Dialog geöffnet ist immer den aktuellen Stand (seekg) des Fils haben. Wo er gerade steht.
    Den Wert habe ich. Jetzt geht es nur darum, wie kann man den Dialog immer auf den aktuellen Stand halten ??
    Muß man da auch mit Thread arbeite ??

    2. In der SDI anwendung habe ich das Hauptfenster in 3 Ansichten gestaltet.
    Unten habe ich eine Ansicht, in der ich immer die momentan übertragenen Daten zu meiner Datenbank angezeigt bekommen möchte.
    Es sollte auch zum Scrollen sein, so dass z.b. auf die letzten 1000 einträge gesehen werden kann.
    Braucht man da wieder ein Thread ??

    Gibt es da ein Lösungsvorschlag ??

    Vielen DAnk im voraus.
    Gruß
    andy_mann



  • Also ich würde das mit einem Einfachen TIMER realisieren... Den Timer setztst du mit SetTimer und danach wird dir in dem eingestellten Intervall die Nachricht WM_TIMER geschickt.



  • Ich danke Dir,

    ich habe gedacht, der Timer setzt mir das ganze tool lam ??

    Was ist dann eigentlich der unterschied zwischen Timer und Thread ??

    Gruß
    andy_mann



  • mmmhhh....

    ich habe jetzt in meiner gesplitteten Ansicht im CFormView eine OnTimer eingebracht.
    Diese Updatet meine OnInitialUpdate() alle 1000 ms.

    In der OnInitialUpdate holle ich mir immer die letzten 100 Datensätze und Trage diese in CListCtrl ein.

    Funktionieren würde es, doch leider nicht sonderlich schön.
    Die Ansicht fängt an Nervig zu Blinken, auch ist kein Scrollen mehr möglich, da ja jedes mal geupdatet wird.

    Hat vielleicht jemand eine Idee, wie man dieses eleganter machen kann ??
    Es wehre z.b. schön, wenn nur immer der neuste Satz hinzu kommt und dann nur die Ansicht aktualisiert wird, wenn es einen neuen gibt.

    Gruß und Danke
    andy_mann



  • Dann wirst du wohl oder übel nicht um Threads herumkommen!

    Wenn nicht dann guck mal bei Codeguru... DIe Anleitung dort ist einiges einfach als hier in der FAQ...

    Oder war codeproject? Jedenfalls eins von beine!



  • Also Timer sind Nachrichten die im gleichen Thread wie alles andere in deinem Fenster (eingabeverarbeitung, ....). Der Nachteil bei einem Timer ist, dass dein Programm solange nichts mehr machen kann, solange du in der Timer-Funktion drin bist. Sprich es wird nichts mehr neu gezeichnet und das Programm reagiert auch nicht mehr auf klicks, usw.. Des weiteren ist ein Timer nicht hundertprozentig genau, da der Timer über das Windows-Nachrichtensystem geht, und das liefert die Nachrichten eine nach der anderen aus. So kann es vor allem bei kurzen Intervallen zu Verzögerungen kommen.

    Threads funktionieren nach einem anderen Prinzip. Es wird einmal parallel zum laufenden Programm eine Funktion aufgerufen und der Thread läuft solange man in der Funktion bleibt. Sprich man hat normalerweise eine Art Endlosschleife die man dann, wenn der Thread gestoppt werden soll unterbricht.

    Für einfache, ehre Zeitunkritische Aufgaben ist sicherlich der Timer vorzuziehen, da er vergleichsweise einfach zu verwenden ist.

    So nun zu deinem anderen Problem mit den Listen. Das kommt davon, dass du die Liste immer leerst und dann frisch füllst. Du solltest versuchen, falls es möglich ist, nur die Daten zu ändern z.B. mit SetItemText.



  • Vielen Dank für die genaue Beschreibung.

    Gibt es eventuell eine kurze Anleitung oder Beispiel Code wie man mit Listen umgehe kann ??

    Gruß
    andy_mann


Anmelden zum Antworten