新建一个MFC基于对话框的应用程序,在界面上放一个Button,为其实现点击事件,代码如下:
void CScreenShotDlg::OnBtnScreenshot()
{
RECT rect = {0, 0, 1900, 1000};
HBITMAP hbmp = CopyScreenToBitmap(&rect);
SaveBitmapToFile(hbmp, "a.bmp");
MessageBox("Save bmp file Successful");
}
被调用的这两个函数实现如下:
HBITMAP CopyScreenToBitmap(LPRECT lpRect)
{
HDC hScrDC, hMemDC; // 屏幕和内存设备描述表
HBITMAP hBitmap, hOldBitmap; // 位图句柄
int nX, nY, nX2, nY2; // 选定区域坐标
int nWidth, nHeight; // 位图宽度和高度
int xScrn, yScrn; // 屏幕分辨率
if (IsRectEmpty(lpRect))
return NULL;
hScrDC = CreateDC("DISPLAY", NULL, NULL, NULL); // 为屏幕创建设备描述表
hMemDC = CreateCompatibleDC(hScrDC); // 为屏幕设备描述表创建兼容的内存设备描述表
nX = lpRect->left;
nY = lpRect->top;
nX2 = lpRect->right;
nY2 = lpRect->bottom;
xScrn = GetDeviceCaps(hScrDC, HORZRES); // 获得屏幕水平分辨率
yScrn = GetDeviceCaps(hScrDC, VERTRES);
if (nX < 0)
nX = 0;
if (nY < 0)