GDI Problem

Liebes Forum!

Ich arbeite jetzt schon einige Tage am selben Problem und komme einfach nicht drauf: Ich habe ein Programm, das mir jede Sekunde die CPU Auslastung und den freien Arbeitsspeicher ausliest und das ganze dan mittels GDI in ein Bitmap als Zahl bzw. Balken rendert. Schließlich mach ich daraus ein Icon, das dan in der Taskleiste zu sehen ist. Funktioniert alles perfekt.

Problem:
Nach etwa einer Stunde Laufzeit, verschwindet das Icon plötzlich. Es bleibt die „leere“ Stelle jedoch zurück und wenn man mit der Maus darüber fährt, wird auch der Text des Notify Icons angezeit. Mit einem Linksklick auf die leere Stelle wird auch das Popup Menu angezeit, jedoch lediglich als schwarzes Rechteck. Erst wenn man mit der Maus über die einzelnen Einträge des Menus fährt, erscheinen sie wieder im gewohnten grau.

Woran kann das liegen?
Windows XP Sp3

mfg dixxi

Hallo dixxi,

Nach etwa einer Stunde Laufzeit, verschwindet das Icon
plötzlich.

Also etwa nach 3’600 Aufrufen.

Ich tippe, dass bei jedem Aufruf eine Resurce angefordet wird, welche am Ende des Aufrufs nicht zurückgegeben wird.

Also mal suchen, was da alles mit Open und New angelegt wird und ob es wieder abgegeben wird.

Möglicherweise findest du den Fehler schneller, wenn du zum Debuggen den Timer schneller laufen lässt.

MfG Peter(TOO)

Hallo

Hab das Programm jetzt komplett neu geschrieben und bei allen SelectObject Funktionen am Schluss wieder das ursprüngliche Object im DC wieder zurück selektiert.

HBITMAP hbmOld = SelectObject(hdc, bmp);
...
SelectObject(hdc, hbmOld);

Jetzt hab ich das Programms schon seit 3 Stunden laufen und es funktioniert noch immer^^

mfg dixxi

Hallo dixxi,

Hab das Programm jetzt komplett neu geschrieben und bei allen
SelectObject Funktionen am Schluss wieder das ursprüngliche
Object im DC wieder zurück selektiert.

HBITMAP hbmOld = SelectObject(hdc, bmp);

SelectObject(hdc, hbmOld);

Jetzt hab ich das Programms schon seit 3 Stunden laufen und es
funktioniert noch immer^^

Dann hattest du im Prinzip zwei Programmierfehler:

  1. Ressourcen nicht zurückgegeben.
  2. Beim anfordern von Resurcen nicht geprüft, ob du diese auch erhälst (Fehlerabfrage).

MfG Peter(TOO)