MF C: Как поочередно отображать два групповых поля при нажатии кнопки? - PullRequest
0 голосов
/ 18 июня 2020

У меня есть два групповых окна, содержащих по 2 переключателя, каждая из которых относится к рисунку. Мне нужен механизм, в котором значение этапа инициализации button1 показывает текст «Групповое поле 2», а текущее групповое поле, отображаемое в диалоговом окне, - это групповое поле 1. Когда я нажимаю на радиокнопку 1 = Групповое окно 2, в настоящее время происходит следующее:

  1. Текст в кнопке 1 изменяется на групповое поле 1

  2. Групповое поле 2 отображается в диалоговом окне

  3. Групповое поле 1 скрыто

Я знаю, как скрыть групповые поля, но не уверен, что это переключаемая часть Group boxes with radio buttons

1 Ответ

0 голосов
/ 18 июня 2020

Вы можете использовать следующий подход: Создайте функцию, которая будет отображать / скрывать соответствующее групповое поле и обновлять текст на кнопке.

  1. Вы можете использовать эту функцию для отображения / скрыть элементы управления и группу. Полученные параметры - это идентификаторы rad ios и группового поля.

    void CMFCApplication2Dlg::ShowHideControls(BOOL hide, int groupID, int radio1ID, int radio2ID)
    {
        GetDlgItem(groupID)->ShowWindow(hide ? SW_HIDE : SW_NORMAL);
        GetDlgItem(radio1ID)->ShowWindow(hide ? SW_HIDE : SW_NORMAL);
        GetDlgItem(radio2ID)->ShowWindow(hide ? SW_HIDE : SW_NORMAL);
    }
    
  2. Создайте функцию, которая управляет переключением:

    void CMFCApplication2Dlg::ToggleGroup(BOOL group1Visible)
    {
        ShowHideControls(group1Visible, IDC_MY_GROUP, IDC_RADIO1, IDC_RADIO2);
        ShowHideControls(!group1Visible, IDC_MY_GROUP2, IDC_RADIO3, IDC_RADIO4);
    
        CString txt;
        txt.Format(L"Group Box %d", group1Visible ? 1 : 2);
        GetDlgItem(IDC_BUTTON_TOGGLE)->SetWindowText(txt);
    }
    
  3. Вызов ToggleGroup из:

    a) OnInitDialog с параметром FALSE.

    b) В обработчике события нажатия кнопки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...