CTabCtrl - 如何使用TabCtrl控件

CTabCtrl - 如何使用TabCtrl控件

建立一个基于对话框的MFC应用程序TabCtrlTest

Step 1:在资源视图中,新建对话框资源,资源ID:IDD_TabCtrlExample_DLG,添加类:CTabCtrlExamlpeDlg。

Step 2:在对话框视图中加入CTabCtrl控件,资源ID:IDD_TAB1,添加控件变量:m_ctlTabInfo。

Step 3:新建两个对话框:

 

对话框ID

添加类

设置对话框属性

补充

对话框1

IDD_Test1_DlG

CTest1

Border:None

Styles:Child

界面可自行设计

对话框2

IDD_Test2_DlG

CTest2

在CTabCtrlExamlpeDlg定义两个成员变量:

public:
         CTabCtrl m_ctlTabInfo;
         CTest1 m_test1Page;//界面1
         CTest2 m_test2Page;//界面2


Step 4:重写CTabCtrlExamlpeDlg::OnInitDialog()函数

(类视图下,选中CCTabCtrlExamlpeDlg类,右键属性,单击属性界面右边第一个正方体图标,双击OnInitDialog即可)

BOOL CTabCtrlExamlpeDlg::OnInitDialog()
{
    CDialog::OnInitDialog();

    // TODO:  在此添加额外的初始
#pragma region 初始化TabCtrl控件
    //首先,为各Tab页添加标题
    m_ctlTabInfo.InsertItem(0,_T("界面一")); 
    m_ctlTabInfo.InsertItem(2,_T("界面二")); 

    //第二,建立各Tab页
    m_test1Page.Create(IDD_Test1_Dlg, GetDlgItem(IDC_TAB1));
    m_test2Page.Create(IDD_Test2_Dlg, GetDlgItem(IDC_TAB1));

    //第三,设置页面的位置在m_ctlTabInfo控件范围内
    CRect rc;
    m_ctlTabInfo.GetClientRect(rc);
    rc.top += 21;
    rc.bottom -= 1;
    rc.left += 1;
    rc.right -= 1;

    m_test1Page.MoveWindow(rc);
    m_test1Page.ShowWindow(SW_SHOW);
    m_test2Page.MoveWindow(rc);
    m_test2Page.ShowWindow(SW_HIDE);
#pragma endregion

    return TRUE;  // return TRUE unless you set the focus to a control
    // 异常: OCX 属性页应返回 FALSE
}


Step 5:响应TabCtrl控件的TCN_SELCHANGE消息,实现切换页面功能。

(右键TabCtrl控件à添加事件处理程序à选中TCN_SELCHANGE消息à添加编辑)

void CTabCtrlExamlpeDlg::OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult)
{
    // TODO: 在此添加控件通知处理程序代码
    *pResult = 0;
    switch (m_ctlTabInfo.GetCurSel())
    {
    case 0:
        m_test1Page.ShowWindow(SW_SHOW);
        m_test2Page.ShowWindow(SW_HIDE);
        break;
    case 1:
        m_test1Page.ShowWindow(SW_HIDE);
        m_test2Page.ShowWindow(SW_SHOW);
        break;
    default:
        break;
    }
}

转载于:https://www.cnblogs.com/whl2012/p/4790194.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值