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

    xiaoxiao2026-03-09  7

    在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);

     

    //设置默认的选项卡 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; }

    转载请注明原文地址: https://ju.6miu.com/read-1307772.html
    最新回复(0)