I'm assuming, what I'm asking should actually be the default, but I'm experiencing some behavior I don't understand.
#include "stdafx.h"
using namespace std;
BOOL CALLBACK enumWindowsProc(
  __in  HWND hWnd,
  __in  LPARAM lParam
) {
  if( !::IsIconic( hWnd ) ) {
    return TRUE;
  }
  int length = ::GetWindowTextLength( hWnd );
  if( 0 == length ) return TRUE;
  TCHAR* buffer;
  buffer = new TCHAR[ length + 1 ];
  memset( buffer, 0, ( length + 1 ) * sizeof( TCHAR ) );
  
  GetWindowText( hWnd, buffer, length + 1 );
  tstring windowTitle = tstring( buffer );
  delete[] buffer;
  wcout << hWnd << TEXT( ": " ) << windowTitle << std::endl;
  return TRUE;
}
int _tmain( int argc, _TCHAR* argv[] ) {
  wcout << TEXT( "Enumerating Windows..." ) << endl;
  BOOL enumeratingWindowsSucceeded = ::EnumWindows( enumWindowsProc, NULL );
  cin.get();
  return 0;
}
If I invoke that code, it will list all minimized windows:

Now, I'm no longer interested in only the minimized windows, now I want all of them. So I remove the IsIconic check:
BOOL CALLBACK enumWindowsProc(
  __in  HWND hWnd,
  __in  LPARAM lParam
) {
  /*
  if( !::IsIconic( hWnd ) ) {
    return TRUE;
  }
  */
  int length = ::GetWindowTextLength( hWnd );
  if( 0 == length ) return TRUE;
  TCHAR* buffer;
  buffer = new TCHAR[ length + 1 ];
  memset( buffer, 0, ( length + 1 ) * sizeof( TCHAR ) );
  
  GetWindowText( hWnd, buffer, length + 1 );
  tstring windowTitle = tstring( buffer );
  delete[] buffer;
  wcout << hWnd << TEXT( ": " ) << windowTitle << std::endl;
  return TRUE;
}
Now I get all windows except the minimized ones (none of the previously listed window handles are listed this time):

For completeness, this is the stdafx.h:
#pragma once
#include "targetver.h"
#include <iostream>
#include <map>
#include <string>
namespace std {
  #if defined _UNICODE || defined UNICODE
    typedef wstring tstring;
  #else
    typedef string tstring;
  #endif
}
#include <stdio.h>
#include <tchar.h>
#include <Windows.h>
#include <psapi.h>