观察其他截图工具比如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