Listing 6 WinSTL-s listbox_front_inserter function object
namespace winstl { struct listbox_front_inserter { public: explicit listbox_front_inserter(HWND hwndListbox) : m_hwndListbox(hwndListbox) , m_bUnicode(::IsWindowUnicode(hwndListbox)) {} void operator ()(char const *s) { insert(s); } void operator ()(wchar_t const *s) { insert(s); } // Implementation private: void insert(char const *s) { if(m_bUnicode) { listbox_insertstring_w(m_hwndListbox, a2w(s), 0); } else { listbox_insertstring_a(m_hwndListbox, s, 0); } } void insert(wchar_t const *s) { if(m_bUnicode) { listbox_insertstring_w(m_hwndListbox, s, 0); } else { listbox_insertstring_a(m_hwndListbox, w2a(s), 0); } } private: HWND m_hwndListbox; bool m_bUnicode; }; } // namespace winstl