Listing 5

using namespace win32::gui::draw;
struct focus_handler : surface::sync_handler<focus_handler,window_base> {
  handle_event on_set_focus() {
    ptr<> surf = wnd_surface(self)->try_find_surface("is_focused");
    if ( surf) surf->is_visible(true);
    return event_ex<wm::keyb::set_focus>().HANDLED_BY(&me::on_set_focus);
  }
  handle_event on_kill_focus() {
    ptr<> surf = wnd_surface(self)->try_find_surface("is_focused");
    if ( surf) surf->is_visible(false);
    return event_ex<wm::keyb::kill_focus>().HANDLED_BY(&me::on_kill_focus);
  }
};