Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menangkap Tangkapan Skrin Aplikasi Windows Menggunakan API Win32?

Bagaimanakah Saya Boleh Menangkap Tangkapan Skrin Aplikasi Windows Menggunakan API Win32?

DDD
DDDasal
2024-12-05 22:12:171042semak imbas

How Can I Capture a Windows Application Screenshot Using the Win32 API?

Tangkapan Skrin Aplikasi Windows

Dalam pengaturcaraan Windows, menangkap tangkapan skrin skrin semasa adalah keperluan biasa. Untuk tujuan ini, Win32 API menyediakan fungsi yang diperlukan untuk memperoleh gambaran bitmap skrin.

Win32 Screenshot Code

Untuk mengambil tangkapan skrin dalam aplikasi Windows menggunakan Win32, ikuti langkah berikut:

HDC hScreenDC = GetDC(nullptr);

Dapatkan semula konteks peranti bagi keseluruhan skrin.

HDC hMemoryDC = CreateCompatibleDC(hScreenDC);

Buat konteks peranti yang serasi untuk menyalin peta bit skrin.

int width = GetDeviceCaps(hScreenDC,HORZRES);
int height = GetDeviceCaps(hScreenDC,VERTRES);

Dapatkan lebar dan tinggi skrin dalam piksel.

HBITMAP hBitmap = CreateCompatibleBitmap(hScreenDC,width,height);

Buat peta bit yang serasi untuk memegang imej skrin.

HBITMAP hOldBitmap = static_cast<HBITMAP>(SelectObject(hMemoryDC,hBitmap));

Pilih peta bit yang serasi ke dalam konteks peranti yang serasi.

BitBlt(hMemoryDC,0,0,width,height,hScreenDC,0,0,SRCCOPY);

Salin imej skrin ke peta bit yang serasi menggunakan pemindahan blok bit (BitBlt).

hBitmap = static_cast<HBITMAP>(SelectObject(hMemoryDC,hOldBitmap));

Pulihkan pemilihan peta bit sebelumnya ke memori konteks peranti.

DeleteDC(hMemoryDC);
DeleteDC(hScreenDC);

Padamkan kedua-dua konteks peranti untuk mengeluarkan sumber.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menangkap Tangkapan Skrin Aplikasi Windows Menggunakan API Win32?. 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