新建一个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: 在此处添加消息处理程序代码
}