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;
    }
}

posted on 2015-09-07 22:50  whl-hl  阅读(6129)  评论(1编辑  收藏  举报

导航