VC实现屏幕截图
2009-09-08 11:33
239 查看
HBITMAP CMyBitmapDlg::CopyScreenToBitmap(LPRECT lpRect)
{
HDC hScrDC, hMemDC;
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) nY = 0;
if (nX2 > xScrn) nX2 = xScrn;
if (nY2 > yScrn) nY2 = yScrn;
nWidth = nX2 - nX;
nHeight = nY2 - nY;
hBitmap = CreateCompatibleBitmap(hScrDC, nWidth, nHeight);
hOldBitmap = (HBITMAP)SelectObject(hMemDC, hBitmap);
ShowWindow(SW_HIDE);
BitBlt(hMemDC, 0, 0, nWidth, nHeight,hScrDC, nX, nY, SRCCOPY);
hBitmap =(HBITMAP)SelectObject(hMemDC, hOldBitmap);
DeleteDC(hScrDC);
DeleteDC(hMemDC);
ShowWindow(SW_SHOW);
return hBitmap;
}
//开始截图
void CExampleDlg::OnBtnCopyscreen()
{
CRect rc;
GetDesktopWindow()->GetWindowRect(&rc);
hBitmap=CopyScreenToBitmap(&rc);
}
//复制到剪贴板
if (OpenClipboard())
{
EmptyClipboard();
SetClipboardData(CF_BITMAP, hBitmap);
CloseClipboard();
}
{
HDC hScrDC, hMemDC;
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) nY = 0;
if (nX2 > xScrn) nX2 = xScrn;
if (nY2 > yScrn) nY2 = yScrn;
nWidth = nX2 - nX;
nHeight = nY2 - nY;
hBitmap = CreateCompatibleBitmap(hScrDC, nWidth, nHeight);
hOldBitmap = (HBITMAP)SelectObject(hMemDC, hBitmap);
ShowWindow(SW_HIDE);
BitBlt(hMemDC, 0, 0, nWidth, nHeight,hScrDC, nX, nY, SRCCOPY);
hBitmap =(HBITMAP)SelectObject(hMemDC, hOldBitmap);
DeleteDC(hScrDC);
DeleteDC(hMemDC);
ShowWindow(SW_SHOW);
return hBitmap;
}
//开始截图
void CExampleDlg::OnBtnCopyscreen()
{
CRect rc;
GetDesktopWindow()->GetWindowRect(&rc);
hBitmap=CopyScreenToBitmap(&rc);
}
//复制到剪贴板
if (OpenClipboard())
{
EmptyClipboard();
SetClipboardData(CF_BITMAP, hBitmap);
CloseClipboard();
}
相关文章推荐
- VC实现屏幕截图
- python实现屏幕截图
- VC屏幕截图源程序(支持对鼠标光标位置的保存)
- 屏幕截图功能实现
- Java实现屏幕截图及剪裁
- C#实现类似qq的屏幕截图程序
- (转)用DirectDraw实现屏幕截图 [ 2004-05-03 ] 陈伟凡 出处:GameDev 目 录
- c#实现屏幕截图
- C#实现类似qq的屏幕截图程序
- java实现区域内屏幕截图示例
- android 实现屏幕截图
- android中实现屏幕截图的代码
- 用C#实现全屏幕截图
- VC屏幕截图
- Android 5.0及以上编程实现屏幕截图功能的方法
- C#软件开发实例.私人订制自己的屏幕截图工具(三)托盘图标及菜单的实现
- VC++实现对远程计算机屏幕的监视
- android实现屏幕截图并保存(去除状态栏)
- 用gdi 实现屏幕截图功能
- Android 5.0及以上实现屏幕截图