1 插入Tab控件的数据项(标签)
CTabCtrl::InsertItem
2 以Tab控件为父窗口创建对话框
3 调整对话框大小
4 在Tab控件的SELCHANGE消息处理函数中,根据当前选项的索引设置对话框的显示状态。
新建一个基于对话框的工程,拖放一个Tab Control控件,Ctrl+W 为之绑定一个控件变量m_wndTabCtrl
插入两个对话框资源做为标签页面,注意设置它们的样式为:child 和 无边框
双击对话框资源为他们添加相关类,父类使用默认CDialog即可
这里类名为CDialog1 和 CDialog2
来到猪对话框类添加刚新建的对话框类的头文件,然后添加两个该类型的成员变量:
CDialog1 m_dlg1;
CDialog2 m_dlg2;
然后来到主对话框的OnInitDialog函数中添加创建代码,注意两个对话框成员创建时要以主对话框为父类创建。代码如下:
BOOL CTabCtrlDlg::OnInitDialog()
{
............................................
// TODO: Add extra initialization here
// 为Tab控件添加标签
m_wndTab.InsertItem (0, "Tab1");
m_wndTab.InsertItem (0, "Tab2");
// 以Tab控件为父窗口创建两个对话框
m_dlg1.Create (IDD_DIALOG1, this);
m_dlg2.Create (IDD_DIALOG2, this);
// 显示第一个对话框
m_dlg1.ShowWindow (SW_SHOW);
// 调整对话框大小
// 获取Tab控件的大小
CRect rt;
m_wndTab.GetClientRect (&rt);
rt.top += 35;
rt.left += 25;
rt.right -= 1;
rt.bottom -= 1;
// 设置每个对话框的大小
m_dlg1.MoveWindow (&rt);
m_dlg2.MoveWindow (&rt);
// 显示第一个对话框
m_dlg1.ShowWindow (SW_SHOW);
return TRUE; // return TRUE unless you set the focus to a control
}
当然,为了能让便签页具备切换的功能,给Tab控件添加TCN_SELCHANGE消息处理
void CMFCTabCtrolDlg::OnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
// 获取当前选择项
int nItem = m_wndTabCtrl.GetCurSel ();
switch (nItem)
{
case 0:
m_dlg1.ShowWindow (SW_SHOW);
m_dlg2.ShowWindow (SW_HIDE);
break;
case 1:
m_dlg2.ShowWindow (SW_SHOW);
m_dlg1.ShowWindow (SW_HIDE);
break;
}
*pResult = 0;
}