在MFC中使用Tab Control控件实现分页显示和跳转

在MFC中使用Tab Control控件实现分页显示和跳转:

1、首先创建一个对话框应用程序。

2、在该对话框上添加Tab控件,然后利用类向导,给Tab控件添加一个Control成员变量m_tabctrl。

3、接着建立两个对话框资源,别忘了把Style改为Child,Border改为None。然后就可以在上面加其他控件了。接着分别为这两个对话框建立两个类,比如CPage1和CPage2。

4、然后在主对话框的头文件中,加入这两个对话框类的对象。

             CTabCtrl m_tabctrl;
             CPage1 m_page1;
             CPage2 m_page2;

5、在主对话框的OnInitDialog成员函数内的添加如下代码:

 

BOOL CDesEncryptDlg::OnInitDialog()
{
 CDialogEx::OnInitDialog();

 // 将“关于...”菜单项添加到系统菜单中。

 // IDM_ABOUTBOX 必须在系统命令范围内。
 ASSERT((IDM_ABOUTBOX & 0xFFF0) ==IDM_ABOUTBOX);
 ASSERT(IDM_ABOUTBOX < 0xF000);

 CMenu* pSysMenu = GetSystemMenu(FALSE);
 if (pSysMenu != NULL)
 {
  BOOL bNameValid;
  CString strAboutMenu;
  bNameValid =strAboutMenu.LoadString(IDS_ABOUTBOX);
  ASSERT(bNameValid);
  if(!strAboutMenu.IsEmpty())
  {
   pSysMenu->AppendMenu(MF_SEPARATOR);
   pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX, strAboutMenu);
  }
 }

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

 // TODO: 在此添加额外的初始化代码
 //===============================================================
 //初始化TAB
 TCITEM tc1,tc2;
 tc1.mask = TCIF_TEXT;
 tc1.pszText = _T("第一页");
 tc2.mask = TCIF_TEXT;
 tc2.pszText = _T("第二页");

 

 m_tabctrl.InsertItem(0,&tc1);
 m_tabctrl.InsertItem(1, &tc2);//到这里只是添加了两个tab页

 

 CRect rec;
 m_tabctrl.GetClientRect(&rec);//获得TAB控件的坐标

 

 //定位选项卡页的位置,这里可以根据情况自己调节偏移量
 rec.bottom -= 2;
 rec.left += 1;
 rec.top += 22;
 rec.right -= 3;

 

 //创建子页面
 m_page1.Create(IDD_DIALOG1,GetDlgItem(IDC_TAB1));
 m_page2.Create(IDD_DIALOG2,GetDlgItem(IDC_TAB1));


 //将子页面移动到指定的位置
 m_page1.MoveWindow(&rec);
 m_page2.MoveWindow(&rec);


 //显示子页面
 m_page1.ShowWindow(SW_SHOW);
 m_page2.ShowWindow(SW_HIDE);

 

//设置默认的选项卡
clip_image001[34]m_tabctrl.SetCurSel(0);
 //===============================================================

 return TRUE;  //除非将焦点设置到控件,否则返回 TRUE
}

 

6、如果要让TAB随着点击显示不同的子Dialog,那么为TAB添加TCN_SELCHANGE事件响应函数。

 

void CDesEncryptDlg::OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT*pResult)  //页面切换
{
 // TODO: 在此添加控件通知处理程序代码
 switch(m_tabctrl.GetCurSel())
 {
 case 0:
  m_page1.ShowWindow(SW_SHOW);
  m_page2.ShowWindow(SW_HIDE);
  break;
 case 1:
  m_page1.ShowWindow(SW_HIDE);
  m_page2.ShowWindow(SW_SHOW);
  break;
 default:
  break;
 }
 *pResult =0;
}


©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页