【转】TabControl使用指南

转自:http://hi.baidu.com/moxingfen/blog/item/7576ec1263992258f819b8eb.html

    http://hi.baidu.com/moxingfen/blog/item/0d12a6f03481c8a6a40f52eb.html/cmtid/85efe86d6e59e1f7431694d5

建立一个MFC项目,在自己的窗口上划一个TabControl出来。然后把这个控件关联上一个control的变量,叫m_page.

//Add an item to the tab_control

    m_page.InsertItem(0, _T("Page1"));
    m_page.InsertItem(1, _T("Page2"));
    m_page.InsertItem(2, _T("Page3"));

这就是向其中添加标签。

然后,插入一个对话框资源,上面随便放点什么,把下列属性改一下:
Border : none
Style : Child
然后为这个对话框创建一个类。就叫CPage1吧。。
然后在主窗口的头文件中加上:
#include "Page1.h"

在主窗口的代码文件头部加上:
CPage1 m_page1;

然后在装载主窗口的那个过程(OnInitDialog)里写:
    m_page1.Create(IDD_PAGE1, &m_page);
    m_page1.SetWindowPos(NULL, 10, 30, 400, 100, SWP_SHOWWINDOW);
这样,这个子窗口就出现在主窗口上了。

 在刚才的TabControl上按右键,选择添加事件处理程序,类列表里选主窗口的那个类,消息类型就不要动了,名字自己起。


void CMainDlg::OnTcnSelchange_Page(NMHDR *pNMHDR, LRESULT *pResult)
{
    //Get current pos
    CRect r;
    m_page.GetClientRect (&r);
    
    //which one is selected now ?
    switch(m_page.GetCurSel())
    {
        case 0:
        m_page1.SetWindowPos(NULL,10,30,r.right -20,r.bottom -40,SWP_SHOWWINDOW);
        break;

        case 1:
        m_page1.SetWindowPos(NULL,10,30,r.right -20,r.bottom -40,SWP_HIDEWINDOW);
        break;

        case 2:
        m_page1.SetWindowPos(NULL,10,30,r.right -20,r.bottom -40,SWP_HIDEWINDOW);
        break;
    }
    *pResult = 0;
}

当然,可以开个数组,存对话框对象的指针,然后就不用这样写switch了。
原文地址:https://www.cnblogs.com/abinxm/p/1821685.html