Hallo zusammen,
ich möchte für einen eigenen Fensterrahmen einige Manipulationen des Hintergrunds in Echtzeit durchführen. Allerdings muss für jeden Zeichnenschritt der unberührte Hintergrund verwendet werden.
Ist es möglich den Bereich eines Fenster (hinter dem Fenster) zu "scannen"? Bei MSDN fand ich lediglich eine DesktopPaint Funktion die den Hintergrund/Pattern des Wallpapers zeichnen kann, allerdings nicht alle Fenster/Desktopsymbole dazwischen.
hDC behind Window
Re: hDC behind Window
Stelle ich denn so anspruchsvolle Fragen? ^^ Im Prinzip möchte ich z.B das was die dwmapi ermöglicht selbst nachstellen, damit es auf jedem System gleich dargestellt wird.
Re: hDC behind Window
Code: Alles auswählen
;Modul DesktopOutput Version 1.10 vom 08.12.2008
#PB_Vers = "4.20"
;
;Funktion: ermöglicht Zeichnen direkt auf´m Desktop
;
;Aufruf: Hdc = DesktopOutput()
; StartDrawing(Hdc)
;
;
;#jaPBeExt exit
Global DesktopOutput_Memory = AllocateMemory(1024)
Procedure.l DesktopOutput()
PokeL(DesktopOutput_Memory, 1)
ProcedureReturn DesktopOutput_Memory
EndProcedureCode: Alles auswählen
hdcDesktop = GetDC_(GetDesktopWindow_())
for x = Win_x1 to Win_x9 ;zukünftige Fenster-Spalten
for y = 1 to Win_y1 to Win_y9 ;zukünftige Fenster-Zeilen
RGB(x,y) = getPixel_(hdcDesktop, x, y) ;Pixel-Farbe holen und speichern (vielleicht nicht gearde in ´nem Array... nur zur Erklärung)
next
next
ReleaseDC_(0,hdcDesktop)
SiBru

Re: hDC behind Window
Das geht so leider nicht. Man könnte theoretisch mit dem DC und BitBlt die Region des Fenster abkopieren, allerdings wäre die Ausgabe ein Screenshot des Fensters und nicht von dem was sich dahinter befindet.