WindowDC im Hintergrund kopieren?
-
Hallo Leute,
hab mal gelesen, dass sowas irgendwie möglich ist - ein DC(das teilweise/komplett verdeckt ist) vollständig zu kopieren?
Bye
-
Siehe
- PrintWindow (ab XP)
oder
- WM_PRINT (dies muss aber von dem entsprechenden Fenster unterstützt werden )
-
Klasse! Das sieht super aus!!

Kleine Frage, fällt jemand hier ein Fehler auf - bekomme nur ein Schwarzes Bild in die Datei geschrieben (write_to_bmp) funktioniert:
SetForegroundWindow( hwnd ); HDC hdcTable = GetDC( hwnd ); HDC hcCard_1 = CreateCompatibleDC( dc ); BitBlt( hcCard_1, 0, 0, 100, 100, hdcTable, 0, 0, SRCCOPY); char buf[100]; sprintf( buf, "dc/pic_dc2_%d.bmp", (DWORD)hdcTable ); write_to_bmp( dc, 100, 100, buf ); DeleteDC( hcCard_1 );
-
Ok, Das mit dem Speichern funktioniert jetzt wunderbar. Mit dem PrintWindow hat sich leider nicht erledigt.
Es existiert einfach nicht. Habe das aktuelle PlatformSDK, Windows XP Sp1 + eine aktuelle Visual C++ 8.
Habe eig. alle headerdateien imcluded:Windows NT/2000/XP/Vista: Included in Windows XP and Windows Server 2003.
Windows 95/98/Me: Unsupported.
Header: Declared in Winuser.h; include Windows.h.
Library: Use User32.lib.Kann ich irgendwo prüfen, ob die header-files die printwindow überhaupt enthalten, evt. hab ich Versionen, bei denen es nicht implementiert ist?
Fehlender Code Zu Prob1:
HBITMAP hBM = CreateCompatibleBitmap( hdcPokerTable, 100, 100 ); SelectObject( hcCard_1, hBM );
-
Für PrintWindow musst Du
_WIN32_WINNT >= 0x0501
definiert haben!
-
Hm danke, habe jetzt in der stdafx.h es hinzugefüht wird jedoch irgendwie nicht angnommen.
#ifndef __STDAFX_H__ #define __STDAFX_H__ #define _WIN32_WINNT >= 0x0501 #include <stdio.h> #include <windows.h> #include <vector> #endifFehler:
microsoft visual studio 8\vc\platformsdk\include\winnt.h(1182) : fatal error C1017: invalid integer constant expression
-
ok passt!!
#define _WIN32_WINNT 0x0501
-
Wir hierbei eig. eine WM_PAINT nachricht aufgerufen?
-
Du meinst bei "PrintWindow"? Da wird ein WM_PAINT mit ganz vielen Tricks aufgerufen... (sieht wirklich sehr unschön aus
)
-
Funktioniert das auch bei einem versteckten Fenster (ShowWindow(hWmd, SW_HIDE) ?
Bekomme dabei nur einen schwarzes Bild. Wenn ich das Fenster darstelle (//EDIT: SW_SHOW), erscheint im Bild dann zwar das Fenster, aber nicht korrekt. Der Inhalt wird nicht darsgestellt. Kann es daran legen, das ich statt eines Bitmaps ein DIB verwende?
Grüße,
don_basto.
-
don_basto schrieb:
Funktioniert das auch bei einem versteckten Fenster (ShowWindow(hWmd, SW_HIDE) ?
Laut Doku geht es nur mit sichtbaren Fenstern!
Du könntest ja das Fenster auf einen Virtuellen Desktop verschieben und dort sichtbar machen...
-
Von virtuellen Desktops hab ich bisher noch nichts gewußt.

Sind die dort dargestellten Fenster auch HW-beschleunigt (D3D, OpenGL) ?
Wo finde ich mehr über Virtuelle Desktops ?Grüße,
don_basto.
-
Window Station and Desktop Functions
http://windowssdk.msdn.microsoft.com/en-us/library/ms687107.aspxAber die Fenster sind dort AFAIK nicht "beschleunigt".
-
Danke.

Werd's mir mal in Ruhe ansehen.
Grüße,
don_basto.