TabControl控件的简单使用-添加tab
阅读原文时间:2023年07月09日阅读:2

1、首先创建一个MFC对话框框架,在对话框资源上从工具箱中添加上一个Tab Control 控件,根据需要修改一下属性,然后右击控件,为这个控件添加一个变量,将此控件跟一个CTabCtrl类变量绑定在一起,这里设为m_tab

  1. 在资源中插入两个对话框,作为Tab Control控件切换的界面,然后必须将这两个对话框的Border属性设置为None,Style设置为Child,可以在这两个页面中添加自己的控件,稍后会在Tab Control 控件添加这两个测试页,为创建的两个对话框建立两个MFC类,CObjInfoDlg1,CObjInfoDlg2,添加类的方法:右击对话框界面,在弹出框中选择添加类;

  1. 在主对话框类中添加

  2. 在主对话框类中实现virtual BOOL OnInitDialog(); 重写以增加对话框的初始化

    BOOL CDlgDemoV1::OnInitDialog()
    {
    CDialogExt::OnInitDialog();

    // TODO:  在此添加额外的初始化
        // 初始化tabctrl
    m_tab.InsertItem(0, _T("测试页面1"));
    m_tab.InsertItem(1, _T("测试页面2"));
    
    // 创建两个对话框
    m_page1.Create(OBJ_INFO_PAGE1, &m_tab);
    m_page2.Create(OBJ_INFO_PAGE2, &m_tab);
    
    //设定在Tab内显示的范围
    CRect rc;
    m_tab.GetClientRect(rc);
    rc.top += 20;
    rc.bottom -= 0;
    rc.left += 0;
    rc.right -= 0;
    m_page1.MoveWindow(&rc);
    m_page2.MoveWindow(&rc);
    
    //把对话框对象指针保存起来
    pDlg[0] = &m_page1;
    pDlg[1] = &m_page2;
    
    //显示初始页面
    pDlg[0]->ShowWindow(SW_SHOW);
    pDlg[1]->ShowWindow(SW_HIDE);
    //保存当前选择
    m_CurSelTab = 0;
    
    return TRUE;  // return TRUE unless you set the focus to a control
    // 异常: OCX 属性页应返回 FALSE

    }

  3. 添加切换tab事件

    void CDlgDemoV1::OnTcnSelchangeObjTab(NMHDR* pNMHDR, LRESULT* pResult)
    {
    // TODO: 在此添加控件通知处理程序代码
    //把当前的页面隐藏起来
    pDlg[m_CurSelTab]->ShowWindow(SW_HIDE);
    //得到新的页面索引
    m_CurSelTab = m_tab.GetCurSel();
    //把新的页面显示出来
    pDlg[m_CurSelTab]->ShowWindow(SW_SHOW);
    *pResult = 0;
    }

  4. 结果

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器