MFC Tab 控件使用

1. 新建一个基于 dialog 的空 MFC 工程

2. 添加两个新的对话框作为子对话框

 

接下来两步,每个子对话框都要操作:

2.1 设置各子对话框属性为 "child, none"

2.2 给各对话框生成对应的对话框类:

3. 在父对话框的头文件中 include 两个子对话框类的头文件并添加两个子对话框的成员变量

4. 在父对话框中添加 Tab 控件并添加此 Tab 控件成员变量

5. 在父对话框 initial 函数中添加如下代码 

    CRect tabRect;   // 标签控件客户区的位置和大小  
	
	m_tab_mainDlg_ct.InsertItem(0, _T("Tab Dialog1"));			// 插入第一个标签“Tab Dialog1”  
	m_tab_mainDlg_ct.InsertItem(1, _T("Tab Dialog2"));			// 插入第二个标签“Tab Dialog2”  

	m_tabDlg1.Create(IDD_DIALOG_TABDLG1, &m_tab_mainDlg_ct);    // 创建第一个标签页  
	m_tabDlg2.Create(IDD_DIALOG_TABDLG2, &m_tab_mainDlg_ct);	// 创建第二个标签页  

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

6. 给 Tab 控件添加 TCN_SELCHANGE 通知消息及编写其处理函数 

 

 TCN_SELCHANGE 消息处理函数中添加代码如下:

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

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

	switch (m_tab_mainDlg_ct.GetCurSel())
	{
		// 如果标签控件当前选择标签为“Tab Dialog1”,则显示m_tabDlg1对话框,隐藏m_tabDlg2对话框  
	case 0:
		m_tabDlg1.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW);
		m_tabDlg2.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
		break;
		// 如果标签控件当前选择标签为“Tab Dialog2”,则显示m_tabDlg2对话框,隐藏m_tabDlg1对话框  
	case 1:
		m_tabDlg1.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
		m_tabDlg2.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW);
		break;
	default:
		break;
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值