Ribbonbar verschwindet bei MouseOver



  • Hallo zusammen,
    habe seit einigen Tagen in einem Programm, also nicht in allen, folgendes Problem:
    Wenn ich das Programm starte, sieht alles normal aus auch wenn ich mit der Maus über den Dialog fahre.
    Nach ca. 1 Minute passiert Folgendes:
    Komme ich auf ein Panel der Ribbonbar, verschwindet der Panel. D.h. man sieht nur noch den Hintergrund. Fahre ich mit der Maus auf andere Panels verschwinden auch diese. Fahre ich mit der Maus auf einen Kategorietab, verschwindet er, das gleiche mit der QAT oben im Titel.
    Bleibe ich auf dem leeren Panel mit der Maus, kommt der passende Tooltip. Die Schrift ist vergrößert.
    Auf dem Dialog sind CMFCButtons. Sie haben eine geladene Bitmap. Komme ich mit der Maus auf den Button, wird die Bitmap schwarz und es erscheint eine
    Fehlermeldung: Es wurde ein falsches Argument festgestellt.
    Fahre ich über das CMFCListControl, bekommen die Spaltenüberschriften eine fette Schrift.

    Wenn ich das mit einer EXE dieses Programms vom Januar probiere. Dasselbe.
    Bei den anderen Programmen besteht dieses Problem nicht.
    Lasse ich den Programmstand auf einem virtuellen Rechner ohne Entwicklungssystem laufen mit Win7, SP1 besteht das Problem nicht.

    Mein Rechner:
    Windows7 64 Bit, SP1
    VS2010, SP1

    Programm ist MFC, SDI, DOC/FormView mit eingeschalteter CLR,
    vor 1 Jahr auf VS2010 mit Ribbonbar umgestellt. Hat bis vor ca. 20 Tagen keine Probleme gemacht.

    Hat hier jemand eine Idee?


  • Mod

    Du hast ein GDI-Leak und Deine Awnedung kann nicht neu zeichnen.

    Typisch erkennbar ist dies, wenn kein Font mehr angelegt werden kann und ein zu großer Default Font angezeigt wird.



  • Hallo Martin,
    danke für die Info. Es ist zumindest eine Richtung, in der ich suchen kann. Einen richtigen logischen Ansatzpunkt habe ich aber noch nicht.

    In der View gibt es weder OnDraw noch OnPaint. Alles was gezeichnet wird kommt von Standard-Dialogen, Buttons, Ribbonbar usw.

    Warum erscheint das Problem nach ziemlich genau 1 Minute. Wenn ich das Programm starte, nichts mache und nach einer Minute die Maus über Ribbonbar oder Button bewege, habe ich das Problem. Innerhalb der ersten Minute kann ich aber auch das Programm ganz normal ohne Probleme bedienen.
    Es macht also keinen Unterschied, ob im Fenster ständig neu gezeichnet werden muss, oder der Dialog einfach steht.

    Warum kommt das Problem auch mit einer EXE vom Januar, die beim Kunden läuft, aber nur bei diesem Programm. Das Programm ist allerdings eines der größten, wobei groß relativ ist. 4MB, CLR-Unterstützung, dynamisch gelinkte MFC-DLLs.

    Warum kommt das Problem in einem virtuellen Rechner nicht? (Die virtuellen PCs haben kein Entwicklungssystem und auch nicht immer die allerletzten Windows-Updates)

    Noch eine Info: Im Debug-Modus habe ich das Problem nicht. Das ist auch ein Hinweis, dass deine Info wohl in die richtige Richtung geht.

    Hast Du eine Idee, mit welchen Mitteln ich das Problem finden kann? Danke.



  • weitere Tests:
    ein Kollege hat auf seinem Rechner das Programm getestet. Gleiches Problem. Er hat auch Win7 / 32 bit / SP1 und VS2010 / SP1 installiert.

    GDI-Test mit Taskmanager:
    nach Start: 240 GDI Objekte, bleibt unverändert wenn man nichts macht.
    nach ca. 1 Minute sinkt die Anzahl automatisch auf 170.
    Wenn man jetzt mit der Maus über das Programmfenster fährt, hat man das Problem und die Anzahl steigt auf ca. 220 Objekte, aber nicht mehr auf 240 wie zuvor.


Anmelden zum Antworten