MFC:如何根据按钮单击交替显示两个组框?

Posted

技术标签:

【中文标题】MFC:如何根据按钮单击交替显示两个组框?【英文标题】:MFC : How to display two group boxes alternatively based on a button click? 【发布时间】:2020-06-18 07:46:49 【问题描述】:

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

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

    对话框中显示组框2

    组框 1 被隐藏

我知道如何隐藏组框我不确定是切换部分

【问题讨论】:

"Toggling"是在一组状态之间切换的操作,本例中为2个("visible" and "not可见")。要切换可见性,如果当前状态为 “可见”,则转换为 “不可见”,反之亦然。 ShowWindow 允许您设置可见性,IsWindowVisible 允许您查询当前可见性状态。 【参考方案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);
    
    

    创建一个控制切换的函数:

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

    拨打ToggleGroup来自:

    a) OnInitDialog 带有 FALSE 参数。

    b) 在按钮单击事件处理程序中。

【讨论】:

以上是关于MFC:如何根据按钮单击交替显示两个组框?的主要内容,如果未能解决你的问题,请参考以下文章

在 MFC 中使用相同的单击操作方法定义两个单选按钮

通过单击按钮交替更改圆形按钮背景和文本

如何在 React 中的两个按钮之间切换并根据单击的按钮更改 NAvlink 路径

如果在运行时添加两个按钮,mfc 按钮将显示不完整

MFC按钮控件按下和弹起的消息函数分别是啥啊

制作组框按钮win32 C++