Dialog flackert und ändert Farbe etc.?
-
hi!
ich injecte eine DLL und diese hat einen Dialog mit ner schönen Farbe Steuerelemente etc.
Manchmal wenn ich das Fenster oft minimiere und verschiebe, ändert das auf einmal seine Farbe zur standardfarbe, die Buttons werden aufm ganzen Bildschirm verteilt und alles ist irgendwie komisch. Wenn ich den Prozess in den ich injecte beende ist wieder alles normal. Natürlich würde ich gerne wissen, was das sein kann
-
das ist vielleicht ein Mist, es kommt in unbestimmten Zeiträumen und dann Gerät das Hauptfenster und mein Dialog in der DLL außer Kontrolle. Ich kann die Fenster nicht mehr richtig verschieben sie werden nicht mehr richtig gezechnet etc.
Hat wirklich niemand einen Tipp?
-
ich erkläre es lieber noch bisschen besser. Wenn ich das Fenster verschiebe flackert es ziemlich stark. Es gibt da irgendwie probleme beim Zeichen des Fensters und dann auch beim Zeichen des Hauptfensters. Der Pfeil von der Droppdown control box wird zu nem komischen zeichen, ein Button von dem Window erscheint ganz links oben am Bildschirm. Das gibt es doch nicht was kann das nur sein

-
klingt nach einem GDI leak oder?
-
Rolfl schrieb:
Wenn ich den Prozess in den ich injecte beende ist wieder alles normal.
Wie kommt es, daß dann der Dialog nicht beendet wird ?

-
der wird natürlich auch beendet. Aber als die Fenster noch da waren gab es sogar Probleme am Desktop wenn ich z. B. ein Icon verschiebe hat sich dieser anscheinend 100 mal neu gezeichnet und Flakert rum aber nach ner Zeit geht es wieder.
-
wie kann ich den ein GDI leak verhindern oder wie entsteht sowas?
-
zeig doch mal alle funktionen wo du gdi funktionen benutzt.
-
und mach mal im task manager die "gdi objekte" spalte dazu.
-
hey super vorschlag vielen dank!!! Die GDI objekte steigen auf 10.000 an und dann ist schluss und dann kommen die beschriebenen Fehler.
Ich benutze bei Initdialog paar SETFONT nachrichten, dann hat der Dialog das hier noch:case WM_CTLCOLORDLG: // für Dialogfarbe case WM_CTLCOLORSTATIC: // für Static Controls SetBkMode((HDC)wParam,TRANSPARENT); return (long)CreateSolidBrush(RGB( 0, 0, 255));und über dem switch im callback habe ich 2 createfont. Wie kommt das dann auf 10.000?
-
Alles, was man Create...()'d, Delele...()'d man auch wieder. Ähnlich mit DC's...