15,979
社区成员
发帖
与我相关
我的任务
分享
CRect rect;
vector<HWND> vec;
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
HWND hMain = (HWND)lParam;
if(::IsWindowVisible(hwnd))
{
TCHAR szName[MAX_PATH] = {0};
::GetWindowText(hwnd, szName, MAX_PATH-1);
if(_tcslen(szName))
{
if(hwnd == hMain)
{
return FALSE;
}
else
{
AfxMessageBox(szName);
vec.push_back(hwnd);
}
}
}
return TRUE;
}
// 调用
::GetWindowRect(GetSafeHwnd(), &rect);
EnumWindows(EnumWindowsProc, (LPARAM)GetSafeHwnd());
CRect rc;
CRect inter;
for(vector<HWND>::const_iterator iter = vec.begin(); iter != vec.end(); ++iter)
{
HWND hWnd = *iter;
::GetWindowRect(hWnd, &rc);
if(inter.IntersectRect(rect, rc))
{
TCHAR szName[MAX_PATH] = {0};
::GetWindowText(hWnd, szName, MAX_PATH-1);
AfxMessageBox(szName);
}
}