u013417264
我放弃治疗好久了
采纳率0%
2016-05-23 06:45

c++怎么截屏啊,得到整个屏幕的HBitmap

HBITMAP CopyScreenToBitmap(int &nWidth, int &nHeight){
//屏幕和内存设备描述表
HDC hScrDC, hMemDC;
//位图句柄
HBITMAP hBitmap, hOldBitmap;
//屏幕分辨率
int xScrn, yScrn;
//为屏幕创建设备描述表
//hScrDC = CreateDC(L"DISPLAY", NULL, NULL, NULL);
HWND hw=getHandle(1);
hScrDC= GetDC(hw);
//为屏幕设备描述表创建兼容的内存设备描述表
hMemDC = CreateCompatibleDC(hScrDC);
//获得屏幕分辨率
xScrn = GetDeviceCaps(hScrDC, HORZRES);
yScrn = GetDeviceCaps(hScrDC, VERTRES);

    //存储屏幕的宽度
    nWidth = xScrn;
    nHeight = yScrn;

    //创建一个与屏幕设备描述表兼容的 位图
    hBitmap = CreateCompatibleBitmap(hScrDC, xScrn, yScrn);
    //把新位图选到内存设备描述表中
    hOldBitmap = (HBITMAP)SelectObject(hMemDC, hBitmap);
    //把屏幕设备描述表拷贝到内存设备描述表中
    BitBlt(hMemDC, 0, 0, xScrn, yScrn, hScrDC, 0, 0, SRCCOPY);
    //得到屏幕位图句柄
    hBitmap = (HBITMAP)SelectObject(hMemDC, hOldBitmap);
    //清除
    //DeleteDC(hScrDC);
    ReleaseDC(hw,hScrDC);
    DeleteDC(hMemDC);

    //返回位图句柄
    return hBitmap;

}
我想做个c++的屏幕找图程序,我找到这段代码,但是这个获得的好像是桌面的位图啊。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

1条回答