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);
}