在 MFC 中,可以使用以下步骤通过主窗口的一个控件来控制不同 TAB 控件子页的不同控件:

  1. 声明 TAB 控件的子页对应的不同控件

在主窗口的头文件中声明 TAB 控件的子页对应的不同控件,例如:

CButton m_btnPage1;
CButton m_btnPage2;
CEdit m_edtPage3;
  1. 获取 TAB 控件的子页对应的不同控件的指针

在主窗口的 OnInitDialog() 函数中获取 TAB 控件的子页对应的不同控件的指针,例如:

CWnd* pWnd = GetDlgItem(IDC_TAB_CONTROL); //获取TAB控件指针
m_pPage1 = new CDialog(); //创建TAB控件的子页1指针
m_pPage1->Create(IDD_PAGE1_DIALOG, this); //创建子页1窗口
m_pPage1->ShowWindow(SW_HIDE); //隐藏子页1窗口
m_pPage2 = new CDialog(); //创建TAB控件的子页2指针
m_pPage2->Create(IDD_PAGE2_DIALOG, this); //创建子页2窗口
m_pPage2->ShowWindow(SW_HIDE); //隐藏子页2窗口
m_pPage3 = new CDialog(); //创建TAB控件的子页3指针
m_pPage3->Create(IDD_PAGE3_DIALOG, this); //创建子页3窗口
m_pPage3->ShowWindow(SW_HIDE); //隐藏子页3窗口
m_btnPage1.SubclassDlgItem(IDC_BTN_PAGE1, m_pPage1); //获取子页1的按钮指针
m_btnPage2.SubclassDlgItem(IDC_BTN_PAGE2, m_pPage2); //获取子页2的按钮指针
m_edtPage3.SubclassDlgItem(IDC_EDT_PAGE3, m_pPage3); //获取子页3的编辑框指针
  1. 响应事件并控制子页控件显示和内容

在主窗口的响应函数中获取当前选中的 TAB 控件子页的指针,然后调用子页对应的不同控件的成员函数,例如:

void CMainFrame::OnBtnPage1Clicked()
{
    CWnd* pWnd = GetDlgItem(IDC_TAB_CONTROL); //获取TAB控件指针
    int nCurSel = ((CTabCtrl*)pWnd)->GetCurSel(); //获取当前选中的子页
    switch (nCurSel)
    {
    case 0: //子页1
        m_pPage1->ShowWindow(SW_SHOW); //显示子页1窗口
        m_pPage2->ShowWindow(SW_HIDE); //隐藏子页2窗口
        m_pPage3->ShowWindow(SW_HIDE); //隐藏子页3窗口
        m_btnPage1.SetWindowText(_T("Button1 Clicked")); //设置子页1的按钮文本
        break;
    case 1: //子页2
        m_pPage1->ShowWindow(SW_HIDE); //隐藏子页1窗口
        m_pPage2->ShowWindow(SW_SHOW); //显示子页2窗口
        m_pPage3->ShowWindow(SW_HIDE); //隐藏子页3窗口
        m_btnPage2.SetWindowText(_T("Button2 Clicked")); //设置子页2的按钮文本
        break;
    case 2: //子页3
        m_pPage1->ShowWindow(SW_HIDE); //隐藏子页1窗口
        m_pPage2->ShowWindow(SW_HIDE); //隐藏子页2窗口
        m_pPage3->ShowWindow(SW_SHOW); //显示子页3窗口
        CString strText;
        m_edtPage3.GetWindowText(strText);
        strText += _T("Button3 Clicked");
        m_edtPage3.SetWindowText(strText); //设置子页3的编辑框文本
        break;
    }
}

通过以上步骤,就可以通过主窗口的一个控件来控制不同 TAB 控件子页的不同控件了。

MFC 主窗口控制 TAB 控件子页内容

原文地址: https://www.cveoy.top/t/topic/ouFO 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录