[delphi, GID] clear / refresh van desktop

Pagina: 1
Acties:

  • Tim Schuhmacher
  • Registratie: Januari 2000
  • Laatst online: 15-02 14:51
Ik ben bezig met een programmaatje te maken wat de muis volgt en eventueel de lokatie duidelijker aangeeft. Eigenlijk een uitbreiding op de optie die standaard in windows zit. Voor diegenen die hem niet kennen: http://www.timschuhmacher.nl/dump/mouse.jpg
Onderaan zit de optie die het mogelijk maakt dat je een cirkel rond je muis krijgt wanneer je ctrl indrukt.

Eigenlijk zou ik graag willen weten hoe dit gemaakt is en dan vooral het grafische gedeelte (niet het afvangen van de ctrl toets).

Om wat specifieker te zijn. Ik heb mbv delphi en GDI een programma gemaakt dat dmv
code:
1
2
3
4
h := GetDesktopWindow;
GetWindowDC(h); 
...
Rectangle(DrawDC, x-15,y-15,x+15,y+15);
de mogelijkheid bied op de gehele desktop te gaan tekenen. Het volgende plaatje laat duidelijk mijn probleem zien:

Afbeeldingslocatie: http://www.timschuhmacher.nl/dump/screenMTthumb.jpg
(muiscursor bevind zich op het form in het midden van het vierkantje)

Het scherm wordt niet gefreshd, zodat mijn oude getekende vierkantjes ook nog steeds zichtbaar zijn. Alleen op het form zelf niet. Daar doe ik namelijk voordat ik op de desktop ga tekenen een form.refresh. Het formulier is op dit moment iets tijdelijks, uiteindelijk moet er helemaal geen form zijn.

vraag: Dus eigenlijk ben ik op zoek naar een refresh van de gehele desktop, zodat ik niet de sporen van mijn vorige tekenopdracht zie.

Nu heb ik geen ervaring met GDI en kon op MSDN niet een refresh functie vinden.

Ik heb gekeken naar programma's (code van) die screenshots van delen van het scherm nemen door middel van het trekken van een rechthoek op de desktop. Dit is alleen niet mogelijk, doordat men dan een screenshot van de hele desktop neemt en dit statische plaatje gebruikt. Als er dus 'beweging' in een achterliggend form is, is dat niet meer zichtbaar.
Ik weet dat het mogelijk moet zijn, want tijdens de muisindicatie van windows gaan animaties op de achtergrond gewoon door.

Een andere optie die niet heel lekker werkt is een form fullscreen en stayOnTop te nemen en vervolgens mbv regions grote delen weg te snijden. StayOnTop wil niet zeggen dat het altijd het bovenste scherm is en het is redelijk intensief voor de processor. Vandaar dat ik wil kijken of een GDI oplossing sneller werkt.

[ Voor 3% gewijzigd door Tim Schuhmacher op 14-07-2006 22:19 ]


Verwijderd

Rechtsreeks op de desktop tekenen is niet aan te bevelen, het is makkelijker om een transparant venster te gebruiken. Hiermee kun je vanaf Win2k vrij eenvoudig colorkeyen en zelfs alpha kanalen gebruiken.

Begin hier eens:
http://msdn.microsoft.com...yeredwindowattributes.asp

  • Tim Schuhmacher
  • Registratie: Januari 2000
  • Laatst online: 15-02 14:51
Ik zal eens kijken naar die link van jouw. Alleen dan heb ik wel het probleem dat het venster niet altijd het bovenste venster is, ondanks de stayOnTop. Tenminste dat is mijn ervaring. Een context menu komt er altijd weer bovenop.

Maar waarom is tekenen op de desktop niet aan te raden. Of is dat om het probleem wat ik nu heb?