实时捕捉屏幕

主要分为三个部分

  • 获取屏幕
// 两个函数都可以进行位图复制,不过StretchBlt可以按照位图进行拉伸或者压缩
BitBlt(HDC hdc,int x,int y,int cx,int cy,HDC hdcSrc,int x1,int y1,DWORD rop);
或者
StretchBlt(HDC hdcDest,int xDest,int yDest,int wDest,int hDest,HDC hdcSrc,int xSrc,int ySrc,int wSrc,int hSrc,DWORD rop);
  • 输出到客户端上
  • 实时刷新

代码

// 输出到屏幕
case WM_PAINT:
{PAINTSTRUCT ps;HDC hdc = BeginPaint(hWnd, &ps);
// 获得客户端的RectRECT rectClient;GetClientRect(hWnd, &rectClient);
// 获得屏幕窗口句柄HWND hwnd = GetDesktopWindow();HDC hdcScreen = GetDC(hwnd);
// 获得屏幕的RectRECT rectScreen;GetWindowRect(hwnd, &rectScreen);
// 输出StretchBlt(hdc, 0, 0, rectClient.right, rectClient.bottom, hdcScreen, 0, 0,     rectScreen.right, rectScreen.bottom, SRCCOPY);
//这个也可以
//BitBlt(hdc, 0, 0, rectClient.right, rectClient.bottom, hdcScreen,0, 0, SRCCOPY);EndPaint(hWnd, &ps);
}
// 实时刷新
case WM_CREATE:SetTimer(hWnd, 1, 100, NULL); // 设置定时器的刷新时间return 0;
case WM_TIMER:
{InvalidateRect(hWnd, NULL, TRUE); //刷新窗口用
}

不过真正运行起来后,我们会发现这个是一闪闪亮晶晶的捕捉屏幕。
解决方法很简单

BOOL InvalidateRect(
HWND hWnd, // handle of window with changed update region
CONST RECT *lpRect, // address of rectangle coordinates
BOOL bErase // erase-background flag
);

bErase:指出无效矩形被标记为有效后,是否重画该区域,重画时用预先定义好的画刷。当指定TRUE时需要重画。
我们将最后一项改为FALSE即可

    InvalidateRect(hWnd, NULL, FALSE); //刷新窗口用


不要看太久,会眼晕

【Windows编程】实时捕捉屏幕相关推荐

  1. 【Windows编程】系列第六篇:创建Toolbar与Statusbar

    2019独角兽企业重金招聘Python工程师标准>>> 上一篇我们学习了解了如何使用Windows GDI画图,该应用程序都是光光的静态窗口,我们使用Windows应用程序,但凡稍微 ...

  2. TI AM335x 可编程实时模块(PRUSS)详解

    转自:http://www.itdadao.com/articles/c15a388010p0.html 1. PRU内核理解 可编程实时单元(Programmable Real-time Unit ...

  3. 如何使对话框中接收到WM_CHAR消息(Windows编程)

    我们大家都知道,对话框是有的时候捕获不到WM_CHAR消息的.比如,你想使对话框里的Edit控件所键入的全部变为大写.我们毫不犹豫的写到:    #include //Declare the Dial ...

  4. 使用c++进行Windows编程中各种操作文件的方法 【转】

    https://www.zhaokeli.com/article/8232.html 使用c++进行Windows编程中各种操作文件的方法 [转] 来源:赵克立博客 分类: C/C++ 标签:--发布 ...

  5. 【Windows编程】系列第三篇:文本字符输出

    2019独角兽企业重金招聘Python工程师标准>>> 上一篇我们展示了如何使用Windows SDK创建基本控件,本篇来讨论如何输出文本字符. 在使用Win32编程时,我们常常要输 ...

  6. Windows编程一日一练(1)

    首先,编程和旅游是我个人人生两大爱好,所以,每天空闲的时候我喜欢敲敲代码,或者看看别人写的程序,实在是很惬意.今天想看看window编程,争取坚持每日一练.        windows程序主要是由微 ...

  7. Windows 编程

    Delphi 利用Object Pascal 和可视控件库(VCL)对底层的Windows API 进行了完美的封装,所以很少需要使用基础Pascal 语言来建立Windows应用程序,也无需直接调用 ...

  8. 一个物理学家学习Windows编程的感受

    最近学习用Visual C++ 作为平台的Windows 编程,感觉到学习这种编程技术的过程与学习物理的思维差异非常大.最明显的,比如对于物理课本,在学习的时候值得一个字一个词的认真去读,有时候需要读 ...

  9. C++,C++编程,Windows编程,MFC

    编程 我们日常生活中接触到的电子类产品中的应用都是由编程而来 为什么编程,偷懒 我们通过编程驱使(指挥,命令)的是电信号 为什么上面说编程是偷懒,电的发现,给人们带来了便利,人们在各个方面驱使(换成& ...

最新文章

  1. 在Ubuntu 14.04 64bit上安装lua5.2
  2. 模式扩展 ——简单工厂+配置文件解除耦合 *****
  3. 【leetcode】762. 二进制表示中质数个计算置位
  4. ISA防火墙之利用WINS服务器实现WPAD
  5. matlab+nnf.m,中南大学-信号与系统matlab实验报告.doc
  6. android实现字体滚动,Android实现字幕滚动的方法
  7. webgl渲染Yuv420P图像
  8. smale学习之数学表达式(day1)
  9. 不使用库函数sqrt求平方根详解(牛顿迭代法) C语言入门
  10. GreenSock动画库在REACT里的使用
  11. 神奇宝贝服务器服务器修改器,pkhex修改器最新版
  12. VGG19图像风格迁移
  13. 服务器gpt分区装系统,UEFI引导+GPT分区安装windows10系统超详细图文教程
  14. 卖家警惕 网购新骗术来袭
  15. 国外服务器使用CDN加速怎么样
  16. ubuntu使用deepin-wine安装微信出现版本过低问题的解决
  17. 云止水中,但是风却不能停泊在海上
  18. P1039 [NOIP2003 提高组] 侦探推理
  19. 订单和订单详情的一对一 ,一对多映射
  20. #{}和${}的区别

热门文章

  1. apt-get update 出错 Could not connect to archive.ubuntukylin.com:10006 (120.240.95.35), connection tim
  2. 提到HDFS就会想到机架感知,那么机架感知你真的知道是什么吗?
  3. 【项目实战】传智健康
  4. pygame一步步玩转圆、矩形、图像、旋转、透明度alpha、colorkey操作(有完整案例)
  5. Java DES 加密解密
  6. JDK8 stream流的骚操作
  7. 有位程序员写了部「修仙小说版」编程教程!网友:蚌埠住了 ....
  8. 阿里云的mysql问题
  9. cad画正弦曲线lisp_AutoCAD怎么画正弦线?
  10. C++ 获取系统当前时间