Maison >développement back-end >C++ >Comment capturer des captures d'écran d'applications Windows à l'aide de Win32 GDI ?

Comment capturer des captures d'écran d'applications Windows à l'aide de Win32 GDI ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-08 13:23:12962parcourir

How to Capture Screenshots of Windows Applications Using Win32 GDI?

Prendre des captures d'écran dans des applications Windows avec Win32

Capturer l'affichage actuel de l'écran est un besoin courant dans le développement d'applications. Sous Windows, cela peut être réalisé efficacement à l'aide des fonctions GDI (Graphics Device Interface) de Win32.

Solution

L'extrait de code suivant montre comment prendre une capture d'écran à l'aide de 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);

Explication

  • GetDC récupère un contexte de périphérique pour l'écran.
  • CreateCompatibleDC crée un contexte de périphérique mémoire compatible avec l'écran DC.
  • GetDeviceCaps obtient l'écran actuel résolution.
  • CreateCompatibleBitmap crée un bitmap compatible avec le DC de l'écran et correspondant à la résolution.
  • SelectObject sélectionne le bitmap dans la mémoire DC.
  • BitBlt copie les pixels de l'écran DC au bitmap dans la mémoire DC.
  • DeleteDC libère la mémoire et l'écran DC.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn