首页 > 解决方案 > MFC:如何根据按钮单击交替显示两个组框?

问题描述

我有两个包含 2 个单选按钮的组合框,每个都参考图。我需要一种机制,其中按钮 1 的初始阶段值显示文本“组框 2”,对话框上显示的当前组框是组框 1。当我单击单选按钮 1 = 组框 2 时,当前发生以下情况:

  1. 按钮 1 中的文本更改为组框 1

  2. 对话框中显示组框 2

  3. 组框 1 已隐藏

我知道如何隐藏组框我不确定是切换部分 带单选按钮的分组框

标签: c++visual-c++mfc

解决方案


您可以使用以下方法:创建一个将显示/隐藏相关组框并更新按钮上的文本的函数。

  1. 您可以使用此功能显示/隐藏控件和组。接收到的参数是无线电和组框的 ID。

    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) 在按钮单击事件处理程序中。


推荐阅读