Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Menangkap Tangkapan Skrin Aplikasi Windows Menggunakan Win32 GDI?

Bagaimana untuk Menangkap Tangkapan Skrin Aplikasi Windows Menggunakan Win32 GDI?

Patricia Arquette
Patricia Arquetteasal
2024-12-08 13:23:12979semak imbas

How to Capture Screenshots of Windows Applications Using Win32 GDI?

Mengambil Tangkapan Skrin dalam Aplikasi Windows dengan Win32

Merakam paparan skrin semasa adalah keperluan biasa dalam pembangunan aplikasi. Dalam Windows, ini boleh dicapai dengan cekap menggunakan fungsi Antara Muka Peranti Grafik (GDI) Win32.

Penyelesaian

Coretan kod berikut menunjukkan cara mengambil tangkapan skrin menggunakan 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);

Penjelasan

  • GetDC mendapatkan semula konteks peranti untuk skrin.
  • CreateCompatibleDC mencipta konteks peranti memori yang serasi dengan skrin DC.
  • GetDeviceCaps memperoleh skrin semasa resolusi.
  • CreateCompatibleBitmap mencipta peta bit yang serasi dengan skrin DC dan sepadan dengan resolusi.
  • SelectObject memilih peta bit ke dalam memori DC.
  • BitBlt menyalin piksel dari skrin DC ke peta bit dalam memori DC.
  • DeleteDC melepaskan memori dan DC skrin.

Atas ialah kandungan terperinci Bagaimana untuk Menangkap Tangkapan Skrin Aplikasi Windows Menggunakan Win32 GDI?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn