100% Prozessorauslastung bei MFC-Dialogfeldanwendung



  • Hallo,
    ich arbeite gerade an einer MFC-Dialogfeldanwendung, die ein PropertySheet mit zwei PropPages und ein FlexGrid-Steuerelement enthält.
    Dabei beobachte ich ein merkwürdiges Phänomen:
    Die Anwendung läuft an sich stabil und hat eine normale Prozessorbeanspruchung
    (laut WinXP-Taskmanager->Systemleistung). Wenn der Taskmanager jedoch geöffnet ist, die Anwendung läuft und man dann in den Taskmanager klickt, dieser also den Fokus bekommt, springt die Prozessorauslastung des Programms auf 100%. Hat einer irgend eine Idee, woran das liegen könnte????? 😕
    Wenn die Anwendung den Fokus behält, bleibt die Prozessorauslastung bei etwa 5-10%, also kein Problem. In welchen Klassen/Methoden könnte da der Fehler liegen?
    Ich habe sämtliche von mir programmierten Methoden auskommentiert, um wirklich nur noch das Gerüst zu testen und auch da ist dieses Problem...

    Ich würde mich freuen, wenn euch dazu was einfällt.
    Dankeschön & Viele Grüße
    E-the-Real



  • Mittlerweile habe ich folgendes rausgefunden:
    Wenn die PropertyPage, die das MS FlexGrid 6.0 enthält, zum ersten Mal aufgerufen wird und die Anwendung dann den Fokus verliert, geht der Prozessor in die Knie
    (ein P4 2.53 *hüstel*).
    Immer noch null Ahnung woran das liegen könnte... 😞
    Also, über jede Idee bin ich sehr dankbar 😉



  • hmmm,...das wird immer verrückter:
    Ich habe gerade festgestellt, dass, wenn ich die Buttons, die auf dem Hauptdialogfeld, auf dem die PropertySheet mit den beiden Pages verankert ist, entferne, die Anwendung normal läuft.
    Kurz: Auf dem Hauptdialogfeld dürfen keine Steuerelemente sein, sonst schmiert das Programm ab, wenn auf die zweite PropertyPage zum ersten Mal gewechselt wird und das Programm dann den Fokus verliert.
    Na, wenn das nichts ist!!! 😮
    Hat irgendjemand eine Idee, wo da vielleicht ein Zusammenhang bestehen könnte ???



  • Starte das Programm mal im Debug Modus (also mit F5) und wenn dann wieder der Prozessor 100% hat, drückst du auf diese Taste mit Pausesymbol und guckst mal, wo der sich befindet.
    Vielleicht hilft dir das ja, ansonsten hab ich keine Ahnung was das sein kann. Meine Vermutung ist halt eine Endlosschleife, woher auch immer.



  • Hmm, danke für den Tip, aber ich kann damit leider nichts anfangen.
    Ich lande bei ntdll! 7c91eb9() , das ganze natürlich disassembliert und vorkompiliert, also keine
    Chance, den c++-Code zu bekommen.
    Ich habe den Source mal hochgeladen, hier
    Kurz zur Info:
    Die zwei PropertyPages haben je eine Klasse, CPropOverview und CPropDetails.
    Das PropertySheet wird in der Dialogfeldklasse der Anwendung erstellt, da werden
    auch die beiden PropPages hinzugefügt.
    So, ferner befindet sich ein static-Steuerelement zum Test auf dem sonst leeren
    Hauptdialogfeld. Wird jetzt zu zu Beginn der Anwendung zum ersten Mal auf den zweiten Registerreiter (Details) geklickt und die Anwendung darauf den Fokus verliert, kommt es zu 100% Porzessorauslastung.
    Ich würde mich freuen, wenn ihr euch das mal anschauen könntet, da ich echt
    überhaupt keine Ahnung habe, woran das liegen könnte 😞 😞
    Viele Grüße
    E-the-Real


Anmelden zum Antworten