Listing 4

handle_event on_rclick() {
  menu<owned> m(IDR_cmds);
  point mouse = cursor_pos(window());
  bool in_radios = 
    child(ID_radios)->window_rect(rel_to_parent).contains_point(mouse);
  bool in_checks = 
    child(ID_checks)->window_rect(rel_to_parent).contains_point(mouse);
  if ( in_checks)      m.sub_menu(1).run_popup(cursor_pos(), window());
  else if ( in_radios) m.sub_menu(2).run_popup(cursor_pos(), window());
  else                 m.sub_menu(0).run_popup(cursor_pos(), window());
  return event<WM_RBUTTONDOWN>().HANDLED_BY(&me::on_rclick);
}