在 MFC 中,可以通过使用消息映射机制来实现不同子页控件与父页控件的关联。具体步骤如下:

  1. 在父页的 .h 文件中声明一个成员变量,用于保存当前选中的子页的索引值,例如:
int m_nCurrentPageIndex;
  1. 在父页的 OnInitDialog() 函数中,通过 GetDlgItem() 函数获取 tab 控件,并设置其初始选中的子页,例如:
CWnd* pTabCtrl = GetDlgItem(IDC_TAB_CONTROL);
((CTabCtrl*)pTabCtrl)->SetCurSel(0);
m_nCurrentPageIndex = 0; // 初始化为第一个子页
  1. 在父页的消息映射中,添加一个响应 tab 控件切换子页的消息的函数,例如:
ON_NOTIFY(TCN_SELCHANGE, IDC_TAB_CONTROL, OnTabSelChange)
  1. 在响应函数 OnTabSelChange() 中,获取当前选中的子页的索引值,并更新 m_nCurrentPageIndex 变量的值,例如:
void CMyParentDlg::OnTabSelChange(NMHDR* pNMHDR, LRESULT* pResult)
{
    NMCTC2ITEMS* pTabInfo = (NMCTC2ITEMS*)pNMHDR;
    m_nCurrentPageIndex = pTabInfo->iItem2;

    *pResult = 0;
}
  1. 在父页的其他函数中,通过 m_nCurrentPageIndex 变量的值来获取当前选中的子页的控件,例如:
CWnd* pCurrentPage = GetDlgItem(IDC_TAB_CONTROL + m_nCurrentPageIndex);
CWnd* pChildCtrl = pCurrentPage->GetDlgItem(IDC_CHILD_CONTROL);

这样,就可以在父页中关联不同子页的控件了。当切换子页时,通过 m_nCurrentPageIndex 变量的值来获取当前选中的子页的控件,然后进行相应的操作。

MFC Tab 控件子页与父页控件关联方法

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

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