Seite 7 von 8
Verfasst: 13.03.2006 13:22
von ts-soft
Gerade weil es eine Desktop-Application ist, sollte die Belastung so gering als möglich ausfallen. Das ist doch sehr wichtig!
Wenn das stellen der Uhr in einer TimerProc stattfindet, welches wie ein Callback funktioniert und von Windows direkt angesprochen wird, ist dies gegeben. Bei Delay ist die Belastung auch bei 250ms zu hoch, würde ich niemals im Hintergrund laufen lassen

Verfasst: 13.03.2006 13:34
von Daniel P.
Also bei meinen ersten Anläufen, mit der GDI auf den Desktop zu pinseln, hatte ich ein Delay von gerade mal 5 Millisekunden angegeben und mein Prozessor (1 GHz) hat kaum ausgeschlagen. Aber ich kenne mich in diesen Sachen nicht wirklich gut aus, von daher glaube ich dir einfach mal

Verfasst: 13.03.2006 13:40
von ts-soft
Die Windows Timer API ist doch extra für sowas gedacht. Und solange Dein
Code unter Linux usw. sowieso nicht läuffähig ist, ist es doch das sinnvollste!
Delay sollte man nur dann verwenden, wenns keine andere Alternative gibt.
Verfasst: 13.03.2006 14:20
von 125
Hi,
Da hat TS-Soft recht, hab den Code eben mal auf 500 MHZern laufen lassen, teilweise hats den Rechner richtig ruckeln lassen......
mfg
125
Verfasst: 14.03.2006 12:09
von Daniel P.
@125:
Ich habe gestern abend noch etwas mit den Transparenz-Modi herumgespielt. Hast du auch das Problem, dass die Schrift, wenn der Fensterhintergrund auf transparent gesetzt ist, einen Rand mit der Farbe des Fensterhintergrunds bekommt? Windows möchte anscheinend die Schrift im TextGadget "weich" zeichnen, sodass sie mit dem Fensterhintergrund verschmilzt. Allerdings vergisst es, dass der Fensterhintergrund gar nicht da ist und macht diesen unschönen Rand an die Buchstaben...
Verfasst: 15.03.2006 16:11
von 125
Hi,
kanns gerade nicht testen aber auf meinen Testrechnern in der Schule hatte ich das Problem nicht. Allerdings muss ich meinen Code nochmal anpassen, so wie er ist läuft er nur auf nicht geskinnten XP, (für mein WoW Design müsste ich dann ja ne andere RGB eintragen...) kann man die Farbe irgendwie schnell und zuverlässig ermitteln?
mfg
125
Verfasst: 15.03.2006 16:20
von Daniel P.
Ich habe in meinem Code einfach die Fensterfarbe auf Rosa gesetzt und die ausgeschnitten. Das Problem mit dem Rand um die Schrift taucht übrigens nicht mit der Standard-Schrift von DrawText (<- ist das die richtige Funktion

) auf, sondern nur mit Extrawurst-Schriftarten. Der gleiche Fehler taucht übrigens bei den DrawText-Funktionen der GDI auf. Schätze, dass PB auf diese Funktionen zurückgreift - korrigiert mich, wenn ich hier falsch liege. Im englischen Forum habe ich mir einen Art Wrapper für GDI+ besorgt, vielleicht klappt es damit besser. GDI+ kennt ja Transparenz und sollte daher diese auch als Hintergrundfarbe unterstützen...
Verfasst: 15.03.2006 21:18
von nicolaus
Hi Habe mir eben mal den Post durchgelesen.
Was eure sache mit dem Delay und / oder Timer angeht würde ich es einfach in nen Thread packen, so sollte die CPU Last auch runter gehen.
Dann noch was zu der eigentlichen sachen und zwar auf den Desktop zeichnen (hinter die icons) das is auch ohne extra Fenster möglich.
Siehe hierzu auch den link
http://www.greenfoxsoft.com/index.html
und hier mal ein beispiel (in C++)
DX Overlay
Das ganze is recht einfach mit DirectX zu realisieren da DX diese möglichkeit schon mitbringt.
Ich bin versuche selber gerade mit OpenGL hinter die Icon´s zu zeichnen (was leider nit so einfach ist wie mit DX) und bin bei suchen im Web auf das beispiel gestossen. hoffe es hilft euch
Gruß,
Nico
Verfasst: 16.03.2006 11:14
von Daniel P.
Mir ging es allerdings darum, nur kleine Bereiche des Desktops zu bepinseln ohne das Windows diese sofort wieder übermalt, sobald diese Bereiche neugezeichnet werden. Dafür ist die Fensterlösung allemal perfekt. Vor allem, weil es mit drei Zeilen Code umsetzbar ist. Trotzdem ist der Tipp, den gesamten Desktop zu animieren, goldwert. Als ich auf der Suche nach meiner Fensterlösung war, habe ich auch immer wieder diese Frage gefunden, wie man den gesamten Hintergrund animiert.
Ich habe übrigens gestern abend noch den GDI+-Wrapper ausprobiert. Die unterstützt tatsächlich "richtige" Transparenz als Schrifthintergrund...
Verfasst: 16.03.2006 13:26
von nicolaus
@Daniel
das habe ich wohl glat überlesen das du nur nen bestimmten bereich "bemalen" willst.
Deine lösung mit dem Layered Window hilft mir aber bei meinem prob mit OpenGL da ja wie gesagt die sache in OpenGL nit so einfach ist wie mit DirectX.
Mal sehen was bei raus kommt. Werde das ergebniss dann mal posten