Seite 1 von 2

desktop id /zeichnen

Verfasst: 21.02.2011 16:49
von TomTom
hi ich habe hier im forum rumgesucht, aber leider nichts darüber gefunden...

ich habe ein frage:
gibt es eine desktopid? also wenn ich darauf mein bild zeichnen würde, dann würde es andere fenster im vordergrund nicht überschreiben? sondern NUR den desktop?

meine idee:
ich habe letztens (mal wieder) matrix geguckt und wollte als bewegbaren hintergrund die matrixanimation setzen...
dazu habe ich schon versucht ein hintergrund als .gif zu verwenden (klappt nicht)

wenn ich jetzt auf dem desktop (ohne andere fenster) zeichnen könnte würde es funktionieren:
ich werde dann zuerst das hintergrundbild auf schwarz setzen und ein screenshot vom desktop machen. alle icons auslesen, meine matrix auf ein image zeichen, icons drüberzeichnen und das fertige bild auf den desktop malen.

ich weiß es funzt nicht 100%ig (wenn jemand einen rechtsklick auf ein icon macht, wird das menü überschrieben) aber das macht mir nichts

wäre echt cool wenn ihr ideen hättet, wie man das realisieren kann.

MFG tomtom

Re: desktop id /zeichnen

Verfasst: 21.02.2011 17:03
von Kiffi
TomTom hat geschrieben:gibt es eine desktopid?
sowas?

Code: Alles auswählen

Debug GetDesktopWindow_()
Grüße ... Kiffi

Re: desktop id /zeichnen

Verfasst: 21.02.2011 17:11
von TomTom
vielen dank kiffi für die schnelle antwort ;)

wenn ich zuhause bin werde ich es testen...


LG tomtom

Re: desktop id /zeichnen

Verfasst: 23.02.2011 20:57
von TomTom
hmm hab da noch ein kleines problem...

jetzt habe ich ja die fensterid... aber wie kann ich darauf zeichnen?
geht das mit StartDrawing() oder wie?


vielen dank! tomtom

Re: desktop id /zeichnen

Verfasst: 23.02.2011 21:10
von HeX0R
Ahh Matrix, da fällt mir doch ein älterer Thread ein.

Puregolf haben wir auch schon ewig nicht mehr gespielt...

Re: desktop id /zeichnen

Verfasst: 25.02.2011 11:51
von bobobo
noch was zum Thema (eventuell)

http://www.purebasic.fr/german/viewtopi ... 97#p277097


(oder du nimmst 'nen Edding, damit kann mal auch prima auf dem Desktop malen 8) )

Re: desktop id /zeichnen

Verfasst: 25.02.2011 12:07
von bobobo
Oder so .. mit dem VLC unter XP zumindest

vlc --video-wallpaper --qt-start-minimized --repeat "und hier das MatrixDingsbumsvideo rein"

Re: desktop id /zeichnen

Verfasst: 25.02.2011 13:41
von TomTom
vielen dank bobobo!

kann man auch anstatt des textes ein sprite oder image zeichnen, bei diesem code?

hdc = GetWindowDC_(GetShellWindow_())
text$ = "Kacke nee "
SetTextColor_(hdc,#Cyan)
SetBkColor_(hdc,#Red)
TextOut_(hdc,0,0,text$,Len(text$))
ReleaseDC_(GetShellWindow_(),hdc)

vielen dank! mfg tomtom

Re: desktop id /zeichnen

Verfasst: 25.02.2011 14:35
von bobobo
sollte wohl gehen .. das ist allerdings gdi-zeugs und damit windowsApi und damit kein direktes PB.


also z.B.

Code: Alles auswählen

LoadFont(0,"",32)
Debug ElapsedMilliseconds()
Time$ = FormatDate("%hh:%ii",Date()-ElapsedMilliseconds()/1000+(3600*8))
ExamineDesktops()
w=DesktopWidth(0):h=DesktopHeight(0) ;
tw=30;428 ;textwidth (gemessen)
th=120 ;textheight(gemessen)
del=333
del=33
ro.l=235:go.l=80:bo.l=80
;r=82:g=111:b=bo
py=h-th

For i=0 To 30
  FreeFont(0)
  LoadFont(0,"",Random(22)+10)
  hdc = GetWindowDC_(GetShellWindow_())
  SelectObject_(hdc,FontID(0))
  SetBkMode_(hdc,#TRANSPARENT)
  r=ro-20+Random(40):g=go-20+Random(40):b=bo-20+Random(40)
  px=Random(w-tw):py=h-th:py=Random(50)+(h-th-50);:py=h-th
  SetTextColor_(hdc,#Black)
  TextOut_(hdc,px+1,py+1,Time$,5)
  
  BeginPath_(hdc) ;hier wird was vorbereitet
  Rectangle_(hdc,px,py,px+3,py+3) ; kleines Rechteck
  Arc_(hdc,px,py,px+20,py+20,0,10,0,90) ;ein kleiner Kreis
  EndPath_(hdc) 
  StrokePath_(hdc); und hier wird dann richtig gemalt
  
  Select Random(2)
    Case 0
      SetTextColor_(hdc,#Yellow)
    Case 1
      SetTextColor_(hdc,#Red)
    Case 2
      SetTextColor_(hdc,#Green)
  EndSelect
  TextOut_(hdc,px,py,Time$,5)
  For iv=1 To 512
    InvalidateRect_(iv,0,0)   ;Soll den Rest bereinigen (iconebene was auch immer)
  Next iv
  del+33
  Debug del
  ReleaseDC_(GetShellWindow_(),hdc)
  Delay(del)
Next

Du brauchst dazu etwas mehr Info was GDI angeht
z.B. http://www.henkessoft.de/C++/WinAPI/Win ... _7_GDI.htm
oder bei Microsoft oder bei google :)

aber schön ist anders . .durch die invalidate-geschichte wird es irgendwann flackern.
das vlc-demo (directX-schirmmalerei) da oben macht es irgendwie besser (und sehr viel aufwändiger)

WENN DU HIER IM BOARD NACH GDI SUCHEN WILLST DANN BEACHTE DASS DER SUCHBEGRIFF MEHR ALS 3 STELLEN HABEN MUSS

Re: desktop id /zeichnen

Verfasst: 25.02.2011 15:00
von ts-soft
bobobo hat geschrieben:Oder so .. mit dem VLC unter XP zumindest

vlc --video-wallpaper --qt-start-minimized --repeat "und hier das MatrixDingsbumsvideo rein"
Für Vista und 7 kann man den Direct3D-Desktop-Modus nutzen. Commanline dafür konnte
ich aber keine finden.