我本意是想借用按钮和界面覆盖的方式,做出一种类似tabcontrolDlg的功能。
出现问题是这样的:
我有一个主对话框A,还有两个大小相同的子对话框B、 C(B、 C处于A内的一个相同子区域)。有三个按钮用来切换显示A、B、C(运行时先默认显示A)。 当我从A切换到B或者C的时候没问题,可是当我从B切换到C,先会闪现一下A再出现C(C切换B也是一样会先闪烁A)。
下面是我切换界面的主要代码,大牛帮我看看是不是这样切换不妥或者要怎么改进才能避免闪烁界面A呢:
/////////////////////////////////////////////////////////////
/*A按钮*/
/////////////////////////////////////////////////////////////
void CtabcontrolDlg::OnBnClickedA()
{
// TODO: 在此添加控件通知处理程序代码
((CButton*)GetDlgItem(IDC_B))->SetCheck(0); //B按钮复位
((CButton*)GetDlgItem(IDC_C))->SetCheck(0); //C按钮复位
m_BDlg.ShowWindow(SW_HIDE); //隐藏B界面
m_CDlg.ShowWindow(SW_HIDE); //隐藏C界面
}
/////////////////////////////////////////////////////////////
/*B按钮*/
/////////////////////////////////////////////////////////////
void CtabcontrolDlg::OnBnClickedB()
{
// TODO: 在此添加控件通知处理程序代码
((CButton*)GetDlgItem(IDC_A))->SetCheck(0); //A按钮复位
((CButton*)GetDlgItem(IDC_C))->SetCheck(0); //C按钮复位
m_BDlg.ShowWindow(SW_SHOW); //显示B界面
m_CDlg.ShowWindow(SW_HIDE); //隐藏C界面
}
/////////////////////////////////////////////////////////////
/*C按钮*/
/////////////////////////////////////////////////////////////
void CtabcontrolDlg::OnBnClickedC()
{
// TODO: 在此添加控件通知处理程序代码
((CButton*)GetDlgItem(IDC_A))->SetCheck(0); //A按钮复位
((CButton*)GetDlgItem(IDC_B))->SetCheck(0); //B按钮复位
m_BDlg.ShowWindow(SW_HIDE); //隐藏B界面
m_CDlg.ShowWindow(SW_SHOW); //显示C界面
}