MFC TabCtrl用法

  1. 基于对话框的MFC程序, 在主对话框中添加TabCtrl控件,CTabCtrl 类型的变量m_tabctrl;
  2.  插入3对话框,并设置属性style=Child,Border=None,创建三个对话框类CDialog1,CDialog2,CDialog3;
  3. 在主对话框中创建三个对话框类的全局对象 m_dg1,m_dg2,m_dg3;
  4. 在主对话框的初始化函数OnInitDialog中初始化;
  5. 在主对话框中添加TabCtrl控件的TCH_SELCHANGE消息;
  • BOOL CTabUIDlg::OnInitDialog()
    {
        CDialogEx::OnInitDialog();

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

        // TODO: 在此添加额外的初始化代码
        
        //设置标签头信息
        m_tabCtrl.InsertItem(0, _T("加载图片"));
        m_tabCtrl.InsertItem(1, _T("直方图统计"));
        m_tabCtrl.InsertItem(2, _T("图像编码"));

        //在view类中,Create 是虚函数由框架调用,是用来“生成一个窗口的子窗口”。
        m_dg1.Create(IDD_DIALOG1, &m_tabCtrl);
        m_dg2.Create(IDD_DIALOG2, &m_tabCtrl);
        m_dg3.Create(IDD_DIALOG3, &m_tabCtrl);

       //正确放置对话框
        CRect si;
        m_tabCtrl.GetClientRect(&si);
        CRect it;
        m_tabCtrl.GetItemRect(0, it);
        si.top += it.top+20;
        si.left += 5;
        si.bottom -=5;
        si.right -=5;
        m_dg1.MoveWindow(&si);
        m_dg2.MoveWindow(&si);
        m_dg3.MoveWindow(&si);

        //设置第一个显示,即选中的标签,对话框
        m_dg1.ShowWindow(SW_SHOW);
        m_tabCtrl.SetCurFocus(0);
        return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
    }

  • void CTabUIDlg::OnSelchangeTab(NMHDR *pNMHDR, LRESULT *pResult)
    {
        // TODO: 在此添加控件通知处理程序代码
        switch (m_tabCtrl.GetCurSel())
        {
        case 0: 
            m_dg1.ShowWindow(SW_SHOW);
            m_dg2.ShowWindow(SW_HIDE);
            m_dg3.ShowWindow(SW_HIDE);
            m_dg1.SetFocus();
            break;
        case 1:
            m_dg2.ShowWindow(SW_SHOW);
            m_dg1.ShowWindow(SW_HIDE);
            m_dg3.ShowWindow(SW_HIDE);
            m_dg2.SetFocus();
            break;
        case 2:
            m_dg3.ShowWindow(SW_SHOW);
            m_dg1.ShowWindow(SW_HIDE);
            m_dg2.ShowWindow(SW_HIDE);
            m_dg3.SetFocus();
            break;
        default:
            break;
        }
        *pResult = 0;
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值