TabControl控件的简单使用-添加tab

1、首先创建一个MFC对话框框架,在对话框资源上从工具箱中添加上一个Tab Control 控件,根据需要修改一下属性,然后右击控件,为这个控件添加一个变量,将此控件跟一个CTabCtrl类变量绑定在一起,这里设为m_tab

  1. 在资源中插入两个对话框,作为Tab Control控件切换的界面,然后必须将这两个对话框的Border属性设置为None,Style设置为Child,可以在这两个页面中添加自己的控件,稍后会在Tab Control 控件添加这两个测试页,为创建的两个对话框建立两个MFC类,CObjInfoDlg1,CObjInfoDlg2,添加类的方法:右击对话框界面,在弹出框中选择添加类;

image
image

  1. 在主对话框类中添加

  2. 在主对话框类中实现virtual BOOL OnInitDialog(); 重写以增加对话框的初始化

BOOL CDlgDemoV1::OnInitDialog()
{
	CDialogExt::OnInitDialog();

	// TODO:  在此添加额外的初始化
		// 初始化tabctrl
	m_tab.InsertItem(0, _T("测试页面1"));
	m_tab.InsertItem(1, _T("测试页面2"));

	// 创建两个对话框
	m_page1.Create(OBJ_INFO_PAGE1, &m_tab);
	m_page2.Create(OBJ_INFO_PAGE2, &m_tab);


	//设定在Tab内显示的范围
	CRect rc;
	m_tab.GetClientRect(rc);
	rc.top += 20;
	rc.bottom -= 0;
	rc.left += 0;
	rc.right -= 0;
	m_page1.MoveWindow(&rc);
	m_page2.MoveWindow(&rc);

	//把对话框对象指针保存起来
	pDlg[0] = &m_page1;
	pDlg[1] = &m_page2;

	//显示初始页面
	pDlg[0]->ShowWindow(SW_SHOW);
	pDlg[1]->ShowWindow(SW_HIDE);
	//保存当前选择
	m_CurSelTab = 0;

	return TRUE;  // return TRUE unless you set the focus to a control
	// 异常: OCX 属性页应返回 FALSE
}
  1. 添加切换tab事件
    image
void CDlgDemoV1::OnTcnSelchangeObjTab(NMHDR* pNMHDR, LRESULT* pResult)
{
	// TODO: 在此添加控件通知处理程序代码
	//把当前的页面隐藏起来
	pDlg[m_CurSelTab]->ShowWindow(SW_HIDE);
	//得到新的页面索引
	m_CurSelTab = m_tab.GetCurSel();
	//把新的页面显示出来
	pDlg[m_CurSelTab]->ShowWindow(SW_SHOW);
	*pResult = 0;
}
  1. 结果
    image
    image
posted @ 2022-12-11 18:18  SpringBreath  阅读(900)  评论(0编辑  收藏  举报