mfc之tabcontrol的用法(非tabsheet)

一、新建一个MFC工程, 取名Tabctrl, 选择基于对话框, 然后点完成。

 
二、删除对话框上默认添加的三个控件,添加Tab Control控件,属性设置:ID:IDC_TAB1 

 

三、 为Tab Control控件绑定控件变量,变量名为m_Tab,类型为CTabCtrl。


四、在TabCtrlDlg.cpp文件中,找到初始化函数OnInitDialog并在里面添加如下代码: 
                                   //分栏,分为第一页第二页

  m_Tab.InsertItem(0,_T(“第一页”));  
     m_Tab.InsertItem(1,_T(“第二页”));

五、在对话框资源里面添加两个对话框资源,

第一个对话框:

删除对话框上默认添加的三个控件;属性设置:border设置为None;style设置为child, ID为IDD_PAGE1;添加静态文本框,改为“第一页”;再为其添加对应的基于CDialog类CPage1。

第二个对话框:

删除对话框上默认添加的三个控件;属性设置:border设置为None;style设置为child, ID为IDD_PAGE2;添加静态文本框,改为“第二页”;添加对应的基于CDialog类CPage2。

 

六、 在TabCtrlDlg.h中包含头文件并添加两个个成员变量m_Page1, m_ Page 2,如下:

        #include "Page1.h"

#include "Page1.h"

        CPage1 m_Page1; 

        CPage2 m_Page2; 

七、 在TabCtrlDlg.cpp对话框的初始化函数OnInitDialog里面添加如下代码: 


//关联对话框,并且将IDC_TABTEST控件设为父窗口 
m_Page1.Create(IDD_PAGE1,GetDlgItem(IDC_TAB1)); 
  m_Page2.Create(IDD_PAGE2,GetDlgItem(IDC_TAB1));
 
//获得IDC_TABTEST客户区大小 
CRect rs; 
m_tab.GetClientRect(&rs); 
//调整子对话框在父窗口中的位置 
rs.top+=30; 
rs.bottom-=60; 
rs.left+=1; 
rs.right-=2; 
 
//设置子对话框尺寸并移动到指定位置 
m_Page1.MoveWindow(&rs); 
m_ Page a2.MoveWindow(&rs); 
 
//分别设置隐藏和显示 
m_ Page 1.ShowWindow(true); 
m_ Page 2.ShowWindow(false); 
 
//设置默认的选项卡 
m_Tab.SetCurSel(0);

 

八、 选择Tab Control控件,右击/添加事件处理程序,消息类型TCN_SELCHANGE,事件响应函数OnSelchangeTabtest(NMHDR* pNMHDR, LRESULT* pResult) ,

函数体代码如下:

int CurSel = m_Tab.GetCurSel(); 
 switch(CurSel) 


case 0:       

 m_Page1.ShowWindow(true); 

m_ Page2.ShowWindow(false); 

break;

case 1:       

 m_Page1.ShowWindow(true); 

m_ Page2.ShowWindow(false); 

break;

default: 

 }  
 *pResult = 0;}

上一篇:归类常用控件GroupBox、TabControl、Expander


下一篇:c# – WinForms TabControl拖放问题