行为矫正有哪些方法:VC 怎样实现屏幕捕捉(源程序)
来源:百度文库 编辑:偶看新闻 时间:2024/04/28 03:57:14
VC++怎样实现屏幕捕捉(源程序)
jackyhwei 发布于 2011-11-06 14:10 点击:155次 这个就是QQ里截取屏幕的功能实现代码,很简单,完整代码如下。 TAG: 视频采集 屏幕捕捉这个就是QQ里截取屏幕的功能实现代码,很简单,完整代码如下。
在ScreenCaptureDlg.cpp中声明2个全局变量:
- HWND hwndCapture;
- CRect rectCapture;
相关代码:
- void CScreenCaptureDlg::onMouseMove(UINT nFlags, CPoint point)
- {
- //如果用户将鼠标左键按住不放,则开始抓取图片
- if(nFlags==MK_LBUTTON)
- {
- //隐藏程序窗口,以免影响在抓取时的“视野”
- ShowWindow(SW_HIDE);
- //装入“照相机”鼠标,开始追踪鼠标的移动
- HCURSOR cur=LoadCursor(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDC_CAMERA));
- SetCursor(cur);
- SetCapture();
- //获得鼠标所在处的窗口句柄
- ClientToScreen(&point);
- hwndCapture=(HWND)::WindowFromPoint(point);
- //取得屏幕的设备环境句柄,以便在屏幕的任何位置绘图
- HDC hDC=::GetDC(NULL);
- //建立一红色的画笔
- HPEN hPen =CreatePen(PS_INSIDEFRAME,6, RGB(255,0,0));
- //将绘图模式设为R2_NOTXORPEN,在绘图时可以不破坏原有的背景
- int nMode =SetROP2(hDC, R2_NOTXORPEN);
- HPEN hpenOld= (HPEN)SelectObject(hDC, hPen);
- //得到鼠标所在处的窗口的区域
- ::GetWindowRect(hwndCapture,&rectCapture);
- //在鼠标所在处的窗口四周画一红色的矩形,做为选定时的提醒
- POINT pt[5];
- pt[0] = CPoint(rectCapture.left, rectCapture.top);
- pt[1] = CPoint(rectCapture.right,rectCapture.top);
- pt[2] = CPoint(rectCapture.right,rectCapture.bottom);
- pt[3] = CPoint(rectCapture.left, rectCapture.bottom);
- pt[4] = CPoint(rectCapture.left, rectCapture.top);
- ::Polyline(hDC,pt,5);
- //延时后再重绘红色的矩形,这样就不会破坏原有内容
- Sleep(100);
- ::Polyline(hDC,pt,5);
- ::SelectObject(hDC,hpenOld);
- ::ReleaseDC(NULL,hDC);
- }
- CDialog::onMouseMove(nFlags, point);
- }
- void CScreenCaptureDlg::OnLButtonUp(UINT nFlags, CPoint point)
- {
- //得到鼠标所在处的窗口的区域宽、高
- int nWidth=rectCapture.Width();
- int nHeight=rectCapture.Height();
- HDC hdcScreen, hMemDC;
- HBITMAP hBitmap, hOldBitmap;
- //建立一个屏幕设备环境句柄
- hdcScreen = CreateDC("DISPLAY", NULL, NULL, NULL);
- hMemDC = CreateCompatibleDC(hdcScreen);
- //建立一个与屏幕设备环境句柄兼容、与鼠标所在处的窗口的区域等大的位图
- hBitmap = CreateCompatibleBitmap(hdcScreen, nWidth, nHeight);
- // 把新位图选到内存设备描述表中
- hOldBitmap =(HBITMAP)SelectObject(hMemDC, hBitmap);
- // 把屏幕设备描述表拷贝到内存设备描述表中
- BitBlt(hMemDC, 0, 0, nWidth, nHeight, hdcScreen,rectCapture.left
- ,rectCapture.top,SRCCOPY);
- //取回鼠标所在处的窗口屏幕位图的句柄
- hBitmap =(HBITMAP)SelectObject(hMemDC, hOldBitmap);
- DeleteDC(hdcScreen);
- DeleteDC(hMemDC);
- // 返回位图句柄
- //打开剪贴板,并将位图拷到剪贴板上
- OpenClipboard() ;
- EmptyClipboard();
- SetClipboardData(CF_BITMAP, hBitmap);
- //关闭剪贴板
- CloseClipboard();
- MessageBox("屏幕内容已经拷到剪贴板上!");
- //终止鼠标捕获
- ReleaseCapture();
- //恢复窗口显示模式
- ShowWindow(SW_NORMAL);
怎样进行屏幕捕捉?
C#中如何实现屏幕捕捉功能?
c++中怎样屏幕捕捉
屏幕捕捉
捕捉屏幕???
vc源程序查看方式
VC++源程序调试问题
VC++的源程序浏览器。
捕捉屏幕是什么意思?如何捕捉?
有了c语言源程序,怎样实现其功能.
大侠来帮帮我吧,怎样捕捉屏幕
QQ屏幕捕捉怎样保存? 就是把它变为图片格式
怎样在QQ聊天时用“捕捉屏幕”发送图片
怎样在vc下实现MFC
vc++源程序在哪下
计算机图形学算法VC源程序
如何捕捉屏幕?
如何捕捉屏幕啊~
怎么用屏幕捕捉???
如何捕捉电影屏幕
vc中怎样捕捉鼠标在窗口上划动的这样的事件?
QQ2005的捕捉屏幕在那里?
动态捕捉屏幕的程序
Windows里怎么捕捉屏幕?