Listing 1: Enumerating through the full range, then storing items in a container.
#include <windows.h>
#include <list>
typedef std::list<HWND> HWND_list_t;
BOOL CALLBACK ChildWindowProc(HWND hwnd, HWND_list_t &wndlist)
{
return (wndlist.push_back(hwnd), TRUE);
}
void main()
{
HWND_list_t wndlist;
if(::EnumChildWindows(0, (WNDENUMPROC)ChildWindowProc, (LPARAM)&wndlist))
{
HWND_list_t::const_iterator begin = wndlist.begin();
HWND_list_t::const_iterator end = wndlist.end();
for(; begin != end; ++begin)
{
fprintf(stdout, "HWND: 0x%08x\n", *begin);
}
}
}