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:如何根据按钮单击交替显示两个组框?的主要内容,如果未能解决你的问题,请参考以下文章