双屏/多显示器截屏

截屏程序的源码网上到处都有,但是基本都不支持多显示器。
这让我一度以为支持多显示器是一件很困难的事情。

 

(demo http://download.csdn.net/detail/problc/3841959 包含多显示器支持,窗口高亮,十字放大等)


其实多显示的截屏跟主显示器的截屏区别并不大,甚至根本不需要EnumDisplayMonitors之类的调用。只是因为网上有了源码,我们就懒得想了。
1. DC的问题。
hScrDC = CreateDC( _T("DISPLAY"),NULL,NULL,NULL );//主显示器DC
hScrDC = ::GetDC(GetDesktopWindow()); //多屏DC


2. 坐标问题。
获取坐标的时候用VIRTUALSCREEN参数
GetSystemMetrics(SM_CXVIRTUALSCREEN);
GetSystemMetrics(SM_CYVIRTUALSCREEN);
GetSystemMetrics(SM_XVIRTUALSCREEN );
GetSystemMetrics(SM_YVIRTUALSCREEN );


特别注意的是,多显示器的时候,SM_XVIRTUALSCREEN和SM_YVIRTUALSCREEN是可以为负值的。
所以多显示器处理时,边界不要以为是(0,0)->(cx,cy)。
多显示器的坐标是以主屏幕的左上角为(0,0)。

如果你有单显示器的源码,不妨改改上面的几个小地方,你会发现多屏截屏其实很容易。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
vc 抓屏程序,截取当前屏幕核心代码,为了操作和显示方便,这里为其增加了一套窗体,你只需在启动程序后在窗体的空白处点击右键,即可将当前屏幕的内容截取下来,并显示在窗体中,与QQ抓图十分相似,但要像QQ截图那样细致专业,还需要添加更多的辅助功能 ================================================================================ MICROSOFT 基础类库: Test 项目概述 =============================================================================== 应用程序向导已为您创建了此 Test 应用程序。此应用程序 不仅介绍了使用 Microsoft 基础类的基本知识, 而且是编写应用程序的起点。 此文件包含组成 Test 应用程序的每个文件的内容摘要。 Test.vcproj 这是使用“应用程序向导”生成的 VC 项目的主项目文件。 它包含有关生成文件的 Visual C 版本的信息,以及 有关用“应用程序向导”所选择的平台、配置和 项目功能的信息。 Test.h 这是应用程序的主头文件。 它包含其他 项目特定的头文件(包括 Resource.h),并声明 CTestApp 应用程序类。 Test.cpp 这是包含应用程序 类 CTestApp 的主应用程序源文件。 Test.rc 这是程序使用的所有 Microsoft Windows 资源 的列表。 它包含存储在 RES 子目录中 的图标、位图和光标。 可直接在 Microsoft Visual C 中编辑此文件。 项目资源包含在 2052 中。 res\Test.ico 这是一个图标文件,用作应用程序的图标。 此 图标包含在主资源文件 Test.rc 中。 res\Test.rc2 此文件包含不由 Microsoft Visual C 编辑的资源。 应将所有不能由 资源编辑器编辑的资源放在此文件中。 ///////////////////////////////////////////////////////////////////////////// 对于主框架窗口: 项目将包含标准的 MFC 界面。 MainFrm.h, MainFrm.cpp 这些文件包含框架类 CMainFrame,该类派生自 CFrameWnd 并控制所有的 SDI 框架功能。 res\Toolbar.bmp 此位图文件用于创建工具栏的平铺图像。 初始工具栏和状态栏在 CMainFrame 类中构造。 使用资源编辑器编辑此工具栏位图,并 更新 Test.rc 中的 IDR_MAINFRAME TOOLBAR 数组以添加 工具栏按钮。 ///////////////////////////////////////////////////////////////////////////// 应用程序向导将创建一种文档类型和一个视图: TestDoc.h、TestDoc.cpp - 文档 这些文件包含 CTestDoc 类。 编辑这些文件 以添加特殊的文档数据并实现文件的保存和加载 (通过 CTestDoc::Serialize)。 TestView.h、TestView.cpp - 文档视图 这些文件包含 CTestView 类。 CTestView 对象用于查看 CTestDoc 对象。 ///////////////////////////////////////////////////////////////////////////// 其他功能: ActiveX 控件 应用程序支持使用 ActiveX 控件。 打印支持和打印预览支持 应用程序向导已生成了一些代码,通过从 MFC 库调用 CView 类中的成员函数来 处理打印、打印设置和打印预览命令。 ///////////////////////////////////////////////////////////////////////////// 其他标准文件: StdAfx.h、StdAfx.cpp 这些文件用于生成名为 Test.pch 的预编译头文件 (PCH) 和名为 StdAfx.obj 的预编译类型文件。 Resource.h 这是标准头文件,它定义新资源 ID。 Microsoft Visual C 将读取并更新此文件。 ///////////////////////////////////////////////////////////////////////////// 其他说明: 应用程序向导使用“TODO:” 来指示 应添加或自定义的源代码部分。 如果应用程序在共享 DLL 中使用 MFC,且应用程序使用的语言不是 操作系统的当前语言,则需要从 Microsoft Visual C 光盘上 Win\System 目录下将相应的本地化资源 MFC70XXX.DLL 复制到计算机的 system 或 system32 目录下, 并将其重命名为 MFCLOC.DLL。 (“XXX”代表 语言缩写。 例如,MFC70DEU.DLL 包含翻译成 德语的资源。) 如果不这样做,应用程序的某些 UI 元素 将保留为操作系统的语言。 /////////////////////////////////////////////////////////////////////////////

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值