I have an enumeration set up kind of like this (Its missing the code that actually does something, but you should get the point)
Code:
BOOL CALLBACK EW_Main (HWND hWnd, LPARAM lParam)
    EnumChildWindows (hWnd, &EW_Main, (LPARAM) hWnd);
    return true;
}
int main()
{
  EnumWindows (&EW_Main, hWnd);
}
I wrote that into the box so excuse any errors but you should be able to figure out what I'm getting at.

My question is why EW_Main is being passed the same handle multiple times. Is it the way I've structured the enumeration?

Please tell me if I was too confusing, I'm not exactly sure how to explain this.