MFC中tab control

本文介绍如何在MFC对话框程序中使用TabControl来切换不同的对话框内容,包括TabControl的基本配置、对话框的创建及显示切换逻辑,并提供代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

新建一个MFC对话框程序

新建3个对话框

添加一个tab control控制,调整好大小

为tab control控件添加变量m_tab


首先去边框,

为下面两个对话框添加类d1,d2




新建变量


在初始化函数中

// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
	//  执行此操作
	SetIcon(m_hIcon, TRUE);			// 设置大图标
	SetIcon(m_hIcon, FALSE);		// 设置小图标

	// TODO: 在此添加额外的初始化代码


	m_tab.InsertItem( 0, _T("Tab1") );  
	m_tab.InsertItem( 1, _T("Tab2") );  

	//创建两个对话框
	D1.Create(IDD_DIALOG1, &m_tab);//&m_tab也可以改成Tab的ID
	D2.Create(IDD_DIALOG2, &m_tab);


	D1.ShowWindow(SW_HIDE);
	D2.ShowWindow(SW_HIDE);

为tab control控件添加事件

void CMFC选项卡Dlg::OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult)
{
	// TODO: 在此添加控件通知处理程序代码

	//GetCurSel返回当前被选中的标签的索引号(以0为基础算起)  
	int sel = m_tab.GetCurSel();  

		CRect rc;
	m_tab.GetWindowRect(rc);获得TAB控件的坐标
	//定位选项卡页的位置,这里可以根据情况自己调节偏移量
	rc.top += 20;
	rc.bottom -= 0;
	rc.left += 0;
	rc.right -= 0;



	//将子页面移动到指定的位置
	D1.MoveWindow(&rc);
	D2.MoveWindow(&rc);
	switch(sel)  
	{  
	case 0:  
	D1.ShowWindow( SW_SHOW );  
	D2.ShowWindow( SW_HIDE );  
	break;  
	case 1:  
	D1.ShowWindow( SW_HIDE ); 
	D2.ShowWindow( SW_SHOW );  
 
	break;  
	}  

	*pResult = 0;
}

为2个对话框添加串口跟随事件

void CMFC选项卡Dlg::OnMoving(UINT fwSide, LPRECT pRect)
{
	CDialogEx::OnMoving(fwSide, pRect);

			CRect rc;
	m_tab.GetWindowRect(rc);获得TAB控件的坐标
	//定位选项卡页的位置,这里可以根据情况自己调节偏移量
	rc.top += 20;
	rc.bottom -= 0;
	rc.left += 0;
	rc.right -= 0;



	//将子页面移动到指定的位置
	D1.MoveWindow(&rc);
	D2.MoveWindow(&rc);


	// TODO: 在此处添加消息处理程序代码
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值