在MFC中使用Tab控件

    xiaoxiao2026-03-08  8

    首先我们新建一个MFC程序, 就简简单单搞个Dialog吧~

     

    然后在”资源”找到Tab Control控件, 将他拖进来~

     

    虽然面板显示了这个控件, 但它完全不会起作用, 因为在代码层次来讲它完全未实现, 只是在资源文件中有所体现

      之后选择主Dialog, 右键选择添加变量, MFC会根据控件在实现类里边添加关于Tab Control的变量, 当然喇你也可以自己在代码处添加. public:          CTabCtrl m_tab; 然后我们再创建两个对话框, 将它们放在Tab Page里边一一对应, 要记得讲对话框的属性设置为style-child和border-none.

     

     

    跟住在代码添加相应头文件和变量. #include "TabPage1.h" #include "TabPage2.h" public:          CTabCtrl m_tab;          CTabPage1m_page1;          CTabPage2 m_page2; OnInitDialog要添加部分代码.          // TODO: 在此添加额外的初始化代码          //==========================================================          //初始化TAB          TCITEM tc1,tc2;          tc1.mask = TCIF_TEXT;          tc1.pszText = _T("第一页");          tc2.mask = TCIF_TEXT;          tc2.pszText = _T("第二页");          m_tab.InsertItem(0, &tc1);          m_tab.InsertItem(1, &tc2); //到这里只是添加了两个tab页          CRect rec;          m_tab.GetClientRect(&rec);//获得TAB控件的坐标          //定位选项卡页的位置,这里可以根据情况自己调节偏移量          rec.bottom -= 2;          rec.left += 1;          rec.top += 27;          rec.right -= 3;          //创建子页面          m_page1.Create(IDD_DIALOG1,GetDlgItem(IDC_TAB));          m_page2.Create(IDD_DIALOG2,GetDlgItem(IDC_TAB));          //将子页面移动到指定的位置          m_page1.MoveWindow(&rec);          m_page2.MoveWindow(&rec);          //显示子页面          m_page1.ShowWindow(SW_SHOW);          m_page2.ShowWindow(SW_HIDE);          //=============================================================== 还有帮Tab Control设置事件. 

          // TODO: 在此添加控件通知处理程序代码     switch(m_tab.GetCurSel())     {       case0:             m_page1.ShowWindow(SW_SHOW);             m_page2.ShowWindow(SW_HIDE);             break;        case1:             m_page1.ShowWindow(SW_HIDE);             m_page2.ShowWindow(SW_SHOW);             break;       default:             break;     }

    然后就可以用了..

     

     

    更多信息可以参考http://apps.hi.baidu.com/share/detail/12680680

    NOTE:要注意!! CPage本身就是一个Dialog, 即这里用TabControl控制的子页面是Dialog类型, 而不是什么Wnd什么View那些 奇怪的东西~ 可能可以通过m_page1.Create(IDD_DIALOG1,GetDlgItem(IDC_TAB1));绑定其他类型.. 曾经在CPage里边又加CDialog, 搞到一堆错误.. 感谢海华大神!!

    转载请注明原文地址: https://ju.6miu.com/read-1307755.html
    最新回复(0)