Fenster spielt verrückt
-
Hallo
Ich habe mir ein Programm gebastelt dass ständig Daten über eine Serielle verbindung abfragt. Funktioniert einwandfrei.
Jedoch nach ca. 2 Tagen Laufzeit spielt das Fenster verrückt.
Nach einem Mausclick sind die ToolBar,ListBox, Statusbar, Tabcontrol nicht mehr ganz zu sehen bzw die StatusBar ist ganz woanders (ganz oben)!!; Das HintergrundBild ist weg; Bei Childfenstern die man dann öffnet kommt der Button nur zum vorschein wenn mann zufällig mit der Maus drüber fährt bzw der Fensterrahmen und der Fenstertitel werden nicht angezeigt.
Ich kann das Programm nur mehr schließen(über TaskManager) und eben neu starten.Der SourceCode wäre hier zu lang aber vielleicht ist dies ein Grundlegendes Problem dass vielleicht mit Timern,Handles oder weiss Gott was zu tun hat.
Oder auch mit dem Rechner selbst(256Ram 450Mhz Proz.) [schwach und alt aber immerhin]
mfg Maxx175
-
2 tage durchgängige laufzeit, oder 2 tage immer mal wieder?
ich könnte mir allerdings beides nicht erklärn...(möglicher weise arbeitsspeicher problem?)
-
Yupp Programm läuft 2 Tage durch
Andere Programme laufen aber ganz normal (Test bis 5 Tage)mfg Maxx
-
Maxx175 schrieb:
Yupp Programm läuft 2 Tage durch
Andere Programme laufen aber ganz normal (Test bis 5 Tage)mfg Maxx
Schließt du vllt. in i-einem Timer ein Handle nicht oder beendest einen Timer nicht richtig (also das einige timer vllt. doppelt und dreifach und vierfach laufen). musst du mal durchgucken....
-
CDC vielleicht nicht frei gegeben
-
Ich tippe mal darauf, dass ein GDI Objekt (Font,Pen o.ä.) erzeugt wurde und in einen DC selektiert wurde. Bevor der DC freigegeben wurde und das Objekt zerstört wird, wurde aber das Objekt nicht wieder aus dem DC entfernt...
Typisches GDI Leak!
-
Danke erstmal für die Tips
In meinem TabControl ist eine HintergrundBild
das so gezeichnet wird:case WM_PAINT: hdcMem=BeginPaint(hWndGrund,&ps); SetBkMode(hdcMem, TRANSPARENT); hfnt = CreateFont(11, 0, 0, 0, 500, FALSE, FALSE, FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_CHARACTER_PRECIS, PROOF_QUALITY, FF_DONTCARE, "MS SANS SERIF"); SelectObject(hdcMem, hfnt); hdcMem = CreateCompatibleDC(NULL); hbmpOldBits = (SelectObject(hdcMem, LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_PUMPE)))); BitBlt(ps.hdc, 140, -20, 150, 362, hdcMem, 0, 0, SRCCOPY); DeleteObject(SelectObject(hdcMem, hbmpOldBits)); DeleteDC(hdcMem); EndPaint(hWndGrund, &ps); return(0);Könnte hier der Fehler sein?
Werde es mal ohne Bild versuchen.Maxx
-
Schlimmer geht es nicht mehr?
1. CreateFont bei jedem Zyklus und Font nie zerstört.
2. Font in DC selektiert und nicht wieder deselektiert.
3. Bitmam in MEM DC selektiert und nicht wieder deselektiert.Kein Wunder...
-
Und wie mache ich es richtig ?
-
mit
DeleteObject(...)und
HFONT hOldFont = SelectObject(...); // bla blubb; anweisungen... SelectObject(hOldFont)