MFC标签页 Tab Control控件介绍

简介

  • 标签页Tab Control在MFC界面开发中的使用频率还是非常高的,本文章就主要介绍下该控件的使用。

创建项目

  • 选择文件->新建->新建项目。创建一个MFC工程。选择基于对话框,点击完成。
    MFC标签页 Tab Control控件介绍_第1张图片
    MFC标签页 Tab Control控件介绍_第2张图片

Tab Control使用

  • 先在资源视图界面,工具箱中选择 Tab Control,放置到界面上。
    MFC标签页 Tab Control控件介绍_第3张图片
  • 然后给Tab Control控件添加一个变量
    MFC标签页 Tab Control控件介绍_第4张图片
  • 接下来需要添加子对话框,用于设置到标签页上。
  • 资源视图界面,选择Dialog,插入dialog
    MFC标签页 Tab Control控件介绍_第5张图片
    MFC标签页 Tab Control控件介绍_第6张图片
  • 添加对话框后,右击选择属性,将Border设置为None,表示不需要边框,Style设置为Child,表示以子控件显示。
    MFC标签页 Tab Control控件介绍_第7张图片
  • 用同样的方法,我们添加三个对话框
    MFC标签页 Tab Control控件介绍_第8张图片
  • 接下来分别为三个对话框添加类
  • 右击对话框,选择添加类
    MFC标签页 Tab Control控件介绍_第9张图片
  • 添加完成后,在类视图中可以看到添加的类
    MFC标签页 Tab Control控件介绍_第10张图片
  • 然后在主界面对应的头文件中包含我们添加的这三个子对话框的头文件
    MFC标签页 Tab Control控件介绍_第11张图片
  • 并添加三个变量和一个CDialog*类型的数组
    MFC标签页 Tab Control控件介绍_第12张图片
  • 为了便于区分,我们在三个对话框上放入不同控件
    MFC标签页 Tab Control控件介绍_第13张图片
    MFC标签页 Tab Control控件介绍_第14张图片
    MFC标签页 Tab Control控件介绍_第15张图片
  • 然后在初始化代码中给标签页添加对话框
    MFC标签页 Tab Control控件介绍_第16张图片
  •   	//获取tab control位置和大小
      	CRect tabRect, itemRect;
      	int nX, nY, nXc, nYc;
      	m_tab.GetClientRect(&tabRect);
      	m_tab.GetItemRect(0, &itemRect);
      	nX = itemRect.left;
      	nY = itemRect.bottom + 1;
      	nXc = tabRect.right - itemRect.left - 2;
      	nYc = tabRect.bottom - nY - 2;
    
      	// 添加对话框1
      	m_tab.InsertItem(0, TEXT("对话框1"));
      	m_sub1.Create(IDD_DIALOG_SUB1, &m_tab);
      	m_dlgSum[0] = &m_sub1;
      	m_dlgSum[0]->ShowWindow(SW_SHOW);
      	//设置对话框1的显示位置
      	m_dlgSum[0]->SetWindowPos(&wndTop, nX, nY, nXc, nYc, SWP_SHOWWINDOW);
    
      	//添加对话框2
      	m_tab.InsertItem(1, TEXT("对话框2"));
      	m_sub2.Create(IDD_DIALOG_SUB2, &m_tab);
      	m_dlgSum[1] = &m_sub2;
      	m_dlgSum[1]->ShowWindow(SW_HIDE);
      	m_dlgSum[1]->SetWindowPos(&wndTop, nX, nY, nXc, nYc, SWP_HIDEWINDOW);
    
      	//添加对话框3
      	m_tab.InsertItem(2, TEXT("对话框3"));
      	m_sub3.Create(IDD_DIALOG_SUB3, &m_tab);
      	m_dlgSum[2] = &m_sub3;
      	m_dlgSum[2]->ShowWindow(SW_HIDE);
      	m_dlgSum[2]->SetWindowPos(&wndTop, nX, nY, nXc, nYc, SWP_HIDEWINDOW);
    
  • 运行后看下效果
    MFC标签页 Tab Control控件介绍_第17张图片
  • 这个时候我们点击标签页,还没办法切换,显示的还是第一个对话框。需要再添加一个选项更改事件
  • 右击标签页控件,选择控件事件,添加一个TCN_SELCHANGE
    MFC标签页 Tab Control控件介绍_第18张图片
  • 在标签页更改事件函数中,去设置要显示的对应的对话框
    MFC标签页 Tab Control控件介绍_第19张图片
  •   	//获取当前选择索引
      	int index = m_tab.GetCurSel();
      	//根据索引显示对应的界面
      	if (index == 0) {
      		m_dlgSum[0]->ShowWindow(SW_SHOW);
      		m_dlgSum[1]->ShowWindow(SW_HIDE);
      		m_dlgSum[2]->ShowWindow(SW_HIDE);
      	}else if (index == 1) {
      		m_dlgSum[0]->ShowWindow(SW_HIDE);
      		m_dlgSum[1]->ShowWindow(SW_SHOW);
      		m_dlgSum[2]->ShowWindow(SW_HIDE);
      	}else if (index == 2) {
      		m_dlgSum[0]->ShowWindow(SW_HIDE);
      		m_dlgSum[1]->ShowWindow(SW_HIDE);
      		m_dlgSum[2]->ShowWindow(SW_SHOW);
      	} 
    
  • 再运行程序,选择不同的标签,就显示对应标签的对话框
    MFC标签页 Tab Control控件介绍_第20张图片
    MFC标签页 Tab Control控件介绍_第21张图片

MFC标签页 Tab Control控件介绍_第22张图片

你可能感兴趣的:(开发语言,mfc,c++,windows)