void question_dlg_proc (pstruct -w reply, p_program_state -&w state, p_msg msg)
{
  select (msg->message)
  {
    case WM_INIT:
      parameters[] = (STR_*[]) msg->mp1;
      length = (int) msg->mp2;

      ...

    return;

    case WM_COMMAND:
      wm_command (msg);
    return;
  }
  else
  {
    ;
  }
}

void wm_command question_dlg_proc (p_msg msg)
{
  select (command, { command = ushort_from (msg->mp1, 1, TAKE_LEFT) })
  {
    case ID_OK:
      dismiss_dialog (msg->window, check_index),
      {
        check_index = '(
                         DLG_ID/OPTION_1 : send_message (window_from_id (msg->window, DLG_ID/OPTION_1), BM_QUERYCHECK, 0, 0),
                         DLG_ID/OPTION_2 : send_message (window_from_id (msg->window, DLG_ID/OPTION_2), BM_QUERYCHECK, 0, 0),
                         DLG_ID/OPTION_3 : send_message (window_from_id (msg->window, DLG_ID/OPTION_3), BM_QUERYCHECK, 0, 0)
                       ) // error (ERR_CHECK_BUTTONS) 
      };
    return;

    case ID_CANCEL:
      dismiss_dialog (msg->window, 0);
    return;
  }
  else
  {
    ;
  }
}
