paint dauert sehr lange



  • hallo freunde der sonne 🙂

    ich habe ein programm geschrieben, dass ein hauptfenster mit CreateWindowEx() erstellt. links im hauptfenster soll ein menü angezeigt werden, auf der rechten seite ein MDIClient fenster.
    es funktionieren auch alle sachen, aber sobald ich fenstergrößen änder oä braucht das fenster SEHR lange bis alles gemalt ist. man kann deutlich nachverfolgen in welcher reihenfolge die elemente gemalt werden. insgesamt bestimmt 1-2 sekunden. die verzögerung empfinde ich als sehr störend.

    naja aber mein problem ist: wie kann ich rausfinden, was diese verzögerung auslöst?

    in den einzelnen mdi-child-fenstern befinden sich eingebettete dialoge. liegt es vllt daran?

    danke



  • Schon mal alles durch den Debugger laufen lassen? Ansonsten vielleicht mal nen Profiler zu Rate ziehen bzw. n Stück Quellcode hier posten.

    Greetz 🙂



  • oh man vielen dank für den tipp!

    hätt ich auch selber drauf kommen können 😃 nichts ist ekliger als mit einem fenster zu arbeiten, dass träge reagiert!!

    hab mir eine tabelle ausgeben lassen:

    WM_PAINT in ms		time since last WM_PAINT		window handle
    
    0.01			0.01					1b02fc
    0.03			15.27					d03d6
    0.03			15.53					c03be
    0.02			15.54					d03ce
    0.10			15.62					d03cc
    0.08			15.50					d03d2
    0.08			15.57					d03d4
    0.07			15.43					1003b8
    0.03			15.48					1103c2
    

    bei der ist mir einmal aufgefallen, dass die aufrufe für WM_PAINT sehr schnell bearbeitet werden, die zeit zwischen zwei WM_PAINT aufrufen aber etwas ZU regelmäßig ist.

    fehler war dann folgender: statt

    while (PeekMessage(&message, NULL, 0, 0, PM_REMOVE))
    

    hatte ich in meinem code nur:

    if (PeekMessage(&message, NULL, 0, 0, PM_REMOVE))
    

    stehen!!

    jetzt läuft alles wie es soll:

    WM_PAINT in ms		time since last WM_PAINT		window handle
    
    0.02			0.02					1902fc
    0.03			0.05					2402de
    0.03			0.04					1a02ce
    0.02			0.03					1e02f8
    0.10			0.11					1902fe
    0.07			0.09					1003c2
    0.07			0.08					f03b8
    0.06			0.07					c03d4
    0.02			0.03					c03d2
    

    DANKE!!


Anmelden zum Antworten