Allgemeine Fragen zur PROFAN Programmierung
Views (Heute): 241156 (2592)
  Suchen
 Zurück zur Übersicht
 AutorThema: Probleme mit transparenten DCs
Mischa Brandt
Datum:09.05.02 23:39 Antwortenals Email verschicken (mischabrandt@gmx.de) 


Hi!

Ich bastel gerade an einer Dll, die einige Operationen an DCs vornimmt. Teilweise müssen die Bilder transparent dargestellt werden. Zunächst habe ich es mir einfach gemacht und ganz simpel 'TransparentBlt' eingesetzt. Das funktionierte ganz gut unter XP. Als ich dann aber unter 98 'nen Probelauf machen ließ, gab es plötzlich Fehler. Nach einigen Neuaufbauten der Grafiken auf dem Bildschirm (teils mehrmals pro sekunde) verschwanden diese unerwarteterweise. Ich vermutete einen Fehler meinerseits, konnte aber trotz MEHRFACHER Durchsicht keinen Bug finden. Der Versuch die Quell-Grafik durch BitBlt direkt auf dem Schirm zu bringen war umso verblüffender. Das Dc war leer! Ich hörte dann zufälligerweise, daß Schwierigkeiten mit 'TransparentBlt' wohl bekannt wären. Windows würde dabei den Speicher nicht ordentlich freigeben...
Nun gut, dachte ich mir, dann mache ich es zu Fuß. Ich schrieb einen Quelltext um, (den ich hier im Forum freundlicherweise bekam) der durch mehrfaches Kopieren via BitBlt mit verschiedenen Rastercodes den gleichen Effekt und nebenbei auch eine Kompatiblität zu 95 erzielte.
Das gleiche Problem!
(Und bei einer zweiten noch intensiveren Routine auch unter XP!)
Ich ersetzte alle transparenten Grafiken mit NICHT-transparenten und es gab unter 98 und XP keine Probleme!
Ich weiß zwar nicht wie TransparentBlt intern funktioniert, aber ich habe die Vermutung, das es auch nix weiter tut als BitBlt-und StretchBlt-Operationen durchzuführen, wie die handgeschriebe Routine halt.
Die einzige mögliche Ursache, die ich dann vermuten kann ist, daß Windows in kurzen Frequenzen wiederholtes kreieren und löschen von DCs nicht richtig verarbeitet. Ich bin zumindest langsam sehr frustriert. :-(
Möglicherweise hat jemand schon ähnliche Probleme gehabt und kann mir sagen, wie ich das Problem lösen kann.

Mischa




 Zurück zur Übersicht