#include "CaptureUtil.h" HWND CaptureUtil::level2Frames[8]; std::list CaptureUtil::tempFrames; BOOL CALLBACK CaptureUtil::EnumChildProc(HWND hwndChild, LPARAM lParam) { //TEXT("AfxWnd100s") char className[100]; GetClassNameA(hwndChild, className, 100); if (string(className) == "AfxWnd100s") { RECT rect; GetWindowRect(hwndChild, &rect); bool show= IsWindowVisible(hwndChild); if (show&&rect.right - rect.left < 1000&& rect.right - rect.left>400) { FrameInfo info = FrameInfo(); info.frame = hwndChild; info.position = rect; tempFrames.push_back(info); } /* if ( rect.right - rect.left>2800) { FrameInfo info = FrameInfo(); info.frame = hwndChild; info.position = rect; tempFrames.push_back(info); } */ } return TRUE; } void CaptureUtil::init(HWND l2win) { tempFrames.clear(); HWND root = l2win; root = FindWindowEx(root, NULL, TEXT("AfxFrameOrView100s"), NULL); EnumChildWindows(root, EnumChildProc, NULL); //¸³Öµ std::list::iterator ele; int index = 0; for (ele = tempFrames.begin();ele != tempFrames.end();ele++) { if (index > 7) { break; } level2Frames[index++] = (*ele).frame; } } HWND CaptureUtil::getHWND(int index) { return level2Frames[index]; } cv::Mat CaptureUtil::capture(int index) { cv::Mat cap = capture(getHWND(index)); return cap; } cv::Mat CaptureUtil::capture(HWND hwnd) { cv::Mat cap = _wss::screen_shot_by_window(hwnd); return cap; }