void get_desktop(IMAGE* pimg) // 抓取桌面图像到 *pimg 对象中
{
// 通过 Windows API 获取桌面的宽高
int w = GetSystemMetrics(SM_CXSCREEN);
int h = GetSystemMetrics(SM_CYSCREEN);
Resize(pimg, w, h);
HDC srcDC = GetDC(NULL); // 获取桌面 DC
HDC dstDC = GetImageHDC(pimg); // 获取 IMAGE 对象的 DC
BitBlt(dstDC, 0, 0, w, h, srcDC, 0, 0, SRCCOPY); // 在两个 DC 之间执行图像拷贝,将桌面抓图拷贝到 IMAGE 对象里面
}
为什么这段代码在我的Win10系统下无法正常截取整个屏幕,而只是截取到了一小部分?
如果把w和h乘上2.25就可以正常截取,可是到了别的机器上又不正常了。
好像是因为Bitblt用的是逻辑宽高,而不是像素宽高?