Listing 3: Client program that demonstrates the use of child_window_sequence in an STL-compliant fashion.
#include <stlsoft_simple_algorithms.h> #include <winstl_window_functionals.h> #include <winstl_string_access.h> struct trace_text : public std::unary_function<HWND, void> { void operator ()(HWND hwnd) { // Print out the window handle, and the caption. printf("0x%08x: \"%s\"\n", hwnd, static_cast<char const*>(winstl::c_str_ptr(hwnd))); } }; int main() { child_window_sequence wnds(::GetDesktopWindow()); // (i) Use in explicit loop child_window_sequence::const_iterator begin(wnds.begin()); child_window_sequence::const_iterator end(wnds.end()); for(; begin != end; ++begin) { if(is_visible()(*begin)) { trace_text()(*begin); } } // (ii) Use via algorithm stlsoft::for_each_if( wnds.begin(), wnds.end(), trace_text(), is_visible()); }