VC2010 使用TAB控件

43 篇文章 0 订阅

1. 添加TAB控件并为其关联一个CTabCtrl类型的控件变量m_tab

在对话框点击右键,选择class wizard...

 

 

2. 创建新的对话框,新对话框个数及ID根据设计需要进行修改

    资源视图栏中,在Dialog文件夹右键

对新添的对话框属性进行设置:Border设为None,Style属性设为Child

在各对话框中添加所需控件后,为各对话框生成各自的对话框类:

右键点击需生成类的对话框

在弹出的对话框中: class name为自己取得类名如 CRegDlg; Base class选择CDialog;

点击finish

 

3. 在主对话框的头文件(PCRDlg.h)中包含新添加对话框的头文件(RegDlg.h)

继续在该主对话款类头文件中,为新添的对话框类创建两个成员变量

 

4. 在主对话框的初始化程序中添加如下代码:

 

CRect tabRect;   // 标签控件客户区的位置和大小   

	m_tab.InsertItem(0, _T("Register"));         // 插入第一个标签“Register”   
	m_tab.InsertItem(1, _T("Graphic"));  // 插入第二个标签“Graphic”   
	m_RegDlg.Create(IDD_REGISTER_DLALOG, &m_tab);    // 创建第一个标签页   
	m_GraDlg.Create(IDD_GRAPHIC_DIALOG, &m_tab); // 创建第二个标签页   

	m_tab.GetClientRect(&tabRect);    // 获取标签控件客户区Rect   
	// 调整tabRect,使其覆盖范围适合放置标签页   
	tabRect.left += 1;                  
	tabRect.right -= 1;   
	tabRect.top += 25;   
	tabRect.bottom -= 1;   
	// 根据调整好的tabRect放置m_jzmDlg子对话框,并设置为显示   
	m_RegDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW);   
	// 根据调整好的tabRect放置m_androidDlg子对话框,并设置为隐藏   
	m_GraDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);


5. 为TAB控件的通知消息TCN_SELCHANGE添加处理函数:

在tab控件上点击右键


 

void CPCRDlg::OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult)
{
	// TODO: Add your control notification handler code here
	*pResult = 0;


	CRect tabRect;    // 标签控件客户区的Rect   

	// 获取标签控件客户区Rect,并对其调整,以适合放置标签页   
	m_tab.GetClientRect(&tabRect);   
	tabRect.left += 1;   
	tabRect.right -= 1;   
	tabRect.top += 25;   
	tabRect.bottom -= 1;   

	switch (m_tab.GetCurSel())   
	{   
		// 如果标签控件当前选择标签为“register”,则显示m_regdlg对话框,隐藏m_gradlg对话框   
	case 0:   
		m_RegDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW);   
		m_GraDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);   
		break;   
		// 如果标签控件当前选择标签为“graphic”,则隐藏m_regdlg对话框,显示m_gradlg对话框   
	case 1:   
		m_RegDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);   
		m_GraDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW);   
		break;   
	default:   
		break;   
	}   

}


 

 

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值