Heim >Backend-Entwicklung >C++ >Wie erstelle ich Screenshots von Windows-Anwendungen mit Win32 GDI?

Wie erstelle ich Screenshots von Windows-Anwendungen mit Win32 GDI?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-08 13:23:12920Durchsuche

How to Capture Screenshots of Windows Applications Using Win32 GDI?

Screenshots in Windows-Anwendungen mit Win32 erstellen

Das Erfassen der aktuellen Bildschirmanzeige ist ein häufiges Bedürfnis bei der Anwendungsentwicklung. Unter Windows kann dies mithilfe der Graphics Device Interface (GDI)-Funktionen von Win32 effizient erreicht werden.

Lösung

Der folgende Codeausschnitt zeigt, wie man einen Screenshot mit erstellt Win32:

HDC hScreenDC = GetDC(nullptr);
HDC hMemoryDC = CreateCompatibleDC(hScreenDC);
int width = GetDeviceCaps(hScreenDC,HORZRES);
int height = GetDeviceCaps(hScreenDC,VERTRES);
HBITMAP hBitmap = CreateCompatibleBitmap(hScreenDC,width,height);
HBITMAP hOldBitmap = static_cast<HBITMAP>(SelectObject(hMemoryDC,hBitmap));
BitBlt(hMemoryDC,0,0,width,height,hScreenDC,0,0,SRCCOPY);
hBitmap = static_cast<HBITMAP>(SelectObject(hMemoryDC,hOldBitmap));
DeleteDC(hMemoryDC);
DeleteDC(hScreenDC);

Erklärung

  • GetDC ruft einen Gerätekontext für den Bildschirm ab.
  • CreateCompatibleDC erstellt einen Speichergerätekontext, der mit kompatibel ist der Bildschirm-DC.
  • GetDeviceCaps ruft den aktuellen Bildschirm ab Auflösung.
  • CreateCompatibleBitmap erstellt eine Bitmap, die mit dem Bildschirm-DC kompatibel ist und der Auflösung entspricht.
  • SelectObject wählt die Bitmap im Speicher-DC aus.
  • BitBlt kopiert die Pixel vom Bildschirm DC zur Bitmap im Speicher DC.
  • DeleteDC gibt den Speicher und den Bildschirm frei DCs.

Das obige ist der detaillierte Inhalt vonWie erstelle ich Screenshots von Windows-Anwendungen mit Win32 GDI?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn