MFC-EnumWindows枚举顶层窗口
原创
©著作权归作者所有:来自51CTO博客作者天子骄龙的原创作品,请联系作者获取转载授权,否则将追究法律责任

BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam) //回调函数
//参数1:EnumWindows函数自动传过来的句柄
//参数2:就是EnumWindows函数参数2的值
{
TCHAR ch[MAX_PATH] = { 0 };
CString str;
::GetWindowText(hwnd, ch, MAX_PATH);
str = ch;
if (str == _T("窗口句柄练习")) //寻找指定窗口
{
AfxMessageBox(_T("窗口句柄练习--找到了"));
return 0;
}
return 1;
}
void CcuankoumeijuDlg::OnBnClickedButton3()
{
HWND hWnd2 = GetSafeHwnd();
::SetWindowText(hWnd2, _T("窗口句柄练习"));
BOOL b = EnumWindows(EnumWindowsProc,NULL);//枚举顶层窗口
//该函数枚举所有屏幕上的顶层窗口,并将窗口句柄传送给应用程序定义的回调函数。
// 回调函数返回FALSE将停止枚举,否则EnumWindows函数继续到所有顶层窗口枚举完为止
//参数1:回调函数指针
//参数2:lPararm:指定一个传递给回调函数的值
//返回值:如果函数成功,返回值为非零;如果函数失败,返回值为零
//说明:EnumWindows函数不列举子窗口;
// 调用这个函数比调用GetWindow函数更可靠。调用GetWindow函数中执行这个任务的应用程序可能会陷入死循环或指向一个已被销毁的窗口的句柄
}