MFC tabContrl 使用
tabContrl 和Qt 中的TabWidget 有说不一样 ,不会在页面上点击Tab就会自动跳转,然后在里面添加布局。而MFC 中TabControl 跟Qt 中的stackWidget 类似,通过切换下标的方式 切换所属页面。每个页面都是一个单独的类。
TabContrl 在面板的创建
三个子页面的创建
页面一:
页面二:
页面三:
构造函数中设置tab的三个标题,创建出三个子页面 ,通过类的句柄ID ,添加到tabContrl中。获得TabContrl的页面大小。并设置三个子页面的大小就可以。
//TAB, 加入标签页
m_Tab.InsertItem(0, L"基本情况", 0);
m_Tab.InsertItem(1, L"私人资料", 1);
m_Tab.InsertItem(2, L"单位信息", 2);
m_ChildDlg1.Create(IDD_CHILD_DLG1, &m_Tab);
m_ChildDlg2.Create(IDD_CHILD_DLG2, &m_Tab);
m_ChildDlg3.Create(IDD_CHILD_DLG3, &m_Tab);
//调整窗口的大小
CRect rect;
m_Tab.GetClientRect(&rect);
//m_Tab.GetWindowRect()
//让tab漏出边框,对子窗口大小进行调整
rect.top += 22; //22 是tab标签的高度
rect.left += 1;
rect.right -= 3;
rect.bottom -= 2;
m_ChildDlg1.MoveWindow(&rect);
m_ChildDlg2.MoveWindow(&rect);
m_ChildDlg3.MoveWindow(&rect);
m_ChildDlg1.ShowWindow(SW_SHOW);
m_ChildDlg2.ShowWindow(SW_HIDE);
m_ChildDlg3.ShowWindow(SW_HIDE);
添加tabContrl的控件事件 选择tab页
void Cclass03Dlg::OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: 在此添加控件通知处理程序代码
int sel = m_Tab.GetCurSel(); //获取当前选择项
m_ChildDlg1.ShowWindow(SW_HIDE);
m_ChildDlg2.ShowWindow(SW_HIDE);
m_ChildDlg3.ShowWindow(SW_HIDE);
switch (sel)
{
case 0: m_ChildDlg1.ShowWindow(SW_SHOW); break;
case 1: m_ChildDlg2.ShowWindow(SW_SHOW); break;
case 2: m_ChildDlg3.ShowWindow(SW_SHOW); break;
}
*pResult = 0;
}
完成后的页面