title: EnumChildWindows never calls its callback
body: <p>I'm trying to manipulate a specific Internet Explorer 11 window. Using WinSpy++ I find that</p>
  
  <ol>
  <li>The top level window's class is an IEFrame with the title of the document as the text (as returned by GetWindowText)</li>
  <li>The actual web view class is called "Internet Explorer_Server" and is a child of the former.</li>
  </ol>
  
  <p>I wrote a simple test case for finding the web view of IE11 opened on "<a href="https://encrypted.google.com/" rel="nofollow">https://encrypted.google.com/</a>" in three different ways:</p>
  
  <pre><code>HWND FindIE_A()
  {
      // Use FindWindow, works!
      HWND hWndTop = ::FindWindowA( NULL, "Google - Internet Explorer" );
      // Find the web view window, the callback (FindIEServer) is NEVER called!
      HWND hWnd = NULL;
      ::EnumChildWindows( hWndTop, &amp;FindIEServer, (LPARAM)&amp;hWnd );
      return hWnd;
  }
  HWND FindIE_B()
  {
      // Use EnumChildWindows with NULL as parent, works!
      HWND hWndTop = NULL;
      ::EnumChildWindows( NULL, &amp;FindIEMain, (LPARAM)&amp;hWndTop );
      // Find the web view window, the callback (FindIEServer) is NEVER called!
      HWND hWnd = NULL;
      ::EnumChildWindows( hWndTop, &amp;FindIEServer, (LPARAM)&amp;hWnd );
      return hWnd;
  }
  HWND FindIE_C()
  {
      // Simple EnumWindows, works!
      HWND hWndTop = NULL;
      ::EnumWindows( &amp;FindIEMain, (LPARAM)&amp;hWndTop );
      // Find the web view window, the callback (FindIEServer) is NEVER called!
      HWND hWnd = NULL;
      ::EnumChildWindows( hWndTop, &amp;FindIEServer, (LPARAM)&amp;hWnd );
      return hWnd;
  }
  </code></pre>
  
  <p>The callbacks that are very simple; get a property from the window and compare against a hard-coded value:</p>
  
  <pre><code>BOOL CALLBACK FindIEServer( HWND hWnd, LPARAM lParam )
  {
      char className[64];
      ::GetClassNameA( hWnd, className, sizeof(className) );
      if ( !strcmp( className, "Internet Explorer_Server" ) )
      {
          *(HWND*)lParam = hWnd;
          return FALSE;
      }
      return TRUE;
  }
  BOOL CALLBACK FindIEMain( HWND hWnd, LPARAM lParam )
  {
      char text[128];
      ::GetWindowTextA( hWnd, text, sizeof(text) );
      if ( !strcmp( text, "Google - Internet Explorer" ) )
      {
          *(HWND*)lParam = hWnd;
          return FALSE;
      }
      return TRUE;
  }
  </code></pre>
  
  <p>EnumChildWindows failed (by not calling the callback AT ALL!) every time when provided with a parent window. Why?</p>