首页 > 代码库 > MFC控件编程:Tab Control

MFC控件编程:Tab Control

Tab控件的使用
   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;
}