OnOk -->OnDraw???



  • Ich habe mal wieder eine Frage!
    Ich finds super, dass ihr euch immer so eine Mühe gebt, die Fragen der anderen zu beantworten. Ein kostenloser Support, wo gibts das schon???
    Nun zu meinem Problem:
    Ich habe eine Fensterbasierte Anwendung, in der der Anwender zunächst auf neues Dokument(OnNew) klicken soll, dann öffnet sich ein Dialog und er kann Werte eintragen. Diese Werte sollen dann ausgebenen werden, sobald er auf OK klickt.
    Wie rufe ich die Funktion OnDraw, in der ich meine Berechnungen und grafischen Ausgaben durchführe auf?????
    Ein weiteres Problem ist, dadurch, dass ich meine ganzen Berechnungen und grafischen Ausgaben in OnDraw stehen habe, wird beim Start des Programms und bei der Anzeig des (eigentlich weissen) Fenster, bereits die default-werte aus meinen Berechnungen aus OnDraw ausgegeben.
    Wie kann ich also vermeiden, dass ich gleich eine Ausgabe in meinem Fenster habe(diese soll ja schliesslich erst nach dem OK-Klicken kommen)?
    Muss ich sonst die Berechnungen und Ausgabe in eine andere Funktion auslagern???
    Wäre wunderbar, wenn mir wieder jemand helfen könnte!!
    Danke im voraus!

    Lord Schirmschen!



  • OnDraw ist ein Message-Handler für die WM_PAINT Windows Message, und sollte niemals direkt aufgerufen werden.

    Du kannst ein neues zeichnen des View's mit Invalidate() auslösen.
    Wenn sich nur bestimmte Bereiche geändert haben, kannst du auch den neu zu zeichnenden Bereich als RECT oder Region mitgeben, um das Zeichnen zu optimieren.

    In OnDraw kannst du ja einfach abtesten, ob die Default-Daten drin sind (evtl. mit Flag), und dann nichts zeichnen (außer dem evtl. Hintergrund löschen)



  • OK, das mit dem Invalidate() funktioniert ja hervorragend, aber der Bildschirm wird nur aktualisiert, wenn man die Größe des Fenster verändert.
    Was gibt es noch für Möglichkeiten, das Fenster automatisch zu aktualisieren , wenn bestimmte Berechnungen durchgeführt wurden.
    Danke im voraus!!!!!!!!!!!!!!!!!!!!



  • am ende der berechnung nochn Invalidate() ? könnt zufällig schon helfen

    wenns flackert, komm wieder ;))
    dann geh ich ins detail



  • jo, das flackert!
    kannst du bitte ins detail gehen??
    danke!



  • wenn du dich ein wenig mit memDC's beschäftigst bist du auf dem richtigem weg

    mit denen bekommst du das flackern weg, die anzeige wird normalerweise auch nur minimal langsamer

    wenn du es dann doch ganz schnell haben magst, solltest du device unabhängig beginnen und dir Sachen über DibSection's anlesen.


Anmelden zum Antworten