1.获取窗口句柄
这里我截取的是整个桌面,你可以根据你想要截图的窗口进行修改。如果你想实现像微信截图那样的功能,你可能需要把所有窗口句柄都获取,然后排列,然后鼠标选中哪个窗口就获取哪个窗口的句柄。
//1.get window source DC.
HWND hwnd = ::GetDesktopWindow();
HDC sourceDC = ::GetWindowDC(hwnd);
2.获取窗口尺寸
//2.get window rect size.
::GetWindowRect(hwnd, &rect);
width = rect.right - rect.left;
height = rect.bottom - rect.top;
3.创建内存DC
//3.create memory DC by source DC.
HDC momDC;
momDC = ::CreateCompatibleDC(sourceDC);
4.创建兼容性位图
//4.create compatible bitmap by source DC.
HBITMAP memBitmap;
memBitmap = ::CreateCompatibleBitmap(sourceDC, width, height);
5.将位图写入内存DC
//5.writes compatible bitmap to memory DC
SelectObject(momDC, memBitmap);
6.截图
//6.screenshot
BitBlt(momDC, 0, 0, width, height, sourceDC, rect.left, rect.top, SRCCOPY);
7.保存截图
到此结束,希望对你有所帮助~
后续的是完整的函数代码:
void CMainFrame