截图功能实现(四)自动框选原理

本文介绍了如何实现截图工具中的自动框选功能,类似QQ截图的高亮显示窗口。该功能通过枚举桌面Z-order上的窗口,遍历并判断鼠标位置是否在特定控件内,从而提高截图效率。实现分为两步:一是枚举窗口,二是判断点在哪个控件矩形区域内,并进行高亮处理。虽然代码较多,但原理简单,适合开发者参考。
摘要由CSDN通过智能技术生成

        观察其他截图工具比如QQ 当鼠标在某个窗口是会自动把某个窗口高亮显示,这个功能其实还是很有用的它可以加快截图时间,可以更快的完成截图,于是乎我也寻思着如何去实现这个功能,网上翻来翻去好几天都没什么进展,有一天无意间发现一个截图的Demo有这个功能,因此研究了一下,发现其实原理还是挺简单的,兴奋之余也拿出来和大家探讨下。这个功能分为2部分(下面代码是从哪个demo里找的具体谁写的我也不知道,先声明下载这里 CSDN下载里有,具体哪个我也忘记有需要的自己下来看看)

        第一部分:枚举窗口

桌面上有个Z-order的概念,因此我们需要遍历整个Z次序的所有窗口,用一个循环遍历,如下伪代码

HWND hWndDesktop = GetDesktopWindow();
	HWND hWnd = NULL;
	do
	{
		hWnd = FindWindowEx(hWndDesktop, hWnd, NULL, NULL);
		if ( IsWindow(hWnd) && IsWindowVisible(hWnd) )
		{
			//保存所有有效窗口
                        //dosomething获取窗口句柄,矩形大小等
                    m_listWindows.push_back(info);//把这些信息保存到一个list中
		}

	}
	while(hWnd != NULL);
这样做还是不够的因为我们现在只是保存了所有对话框,但是对话框里还有控件,控件中也还有控件,那么要怎么枚举所有可见的cwnd呢?

上面我们把所有的对话框已经保存到了list中了那么下面我们从l

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值