GetForeGroundWindow для получения текущего окна / диалога переднего плана
GetParent до тех пор, пока вы не получите NULL (что приведет вас к окну верхнего уровня) **
EnumChildWindows для доступа ко всем зависимым окнам
** Обратите внимание, что приложение может иметь более одного окна верхнего уровня, хотя это не обычно.
Код:
void Ccpp_testDlg::DoWalk ()
{
HWND hCurrent;
HWND hNew;
hCurrent = ::GetForegroundWindow ();
hNew = hCurrent;
while (hNew != NULL)
{
hNew = ::GetParent (hCurrent);
if (hNew != NULL)
{
hCurrent = hNew;
}
}
EnumChildWindows (hCurrent, EnumProc, 0);
}
BOOL CALLBACK EnumProc (HWND hwnd,LPARAM lParam)
{
TCHAR szText [MAX_PATH];
GetWindowText (hwnd, szText, sizeof(szText));
// do something with text
return TRUE;
}