CTabCtrl用法

mac2022-06-30  65

TabCtrl控件可以通过对话框方式直接采用控件静态添加,但是有时候需要去动态创建一个TabCtrl控件,本文是在CFormView上动态创建TabCtrl控件:

1、添加CTabCtrl类的对象:

 

CTabCtrl m_tabCtrl;  

 

2、为TabCtrl控件添加页面,本文创建两个对话框:

CDialog1 m_page1;

CDialog2 m_page2;

3、在资源视图中为m_tabCtrl设置资源ID:

方法:右键资源,选择Resource Symbols,然后弹出资源ID对话框,添加CTabCtrl资源ID号:IDC_TABCTRL;

4、WM_CREATE消息响应,在OnCreate(...)函数中添加如下代码:

 

[cpp]  view plain copy //得到窗口的大小  CRect rec;  GetClientRect(&rec);  //创建tabCtrl控件  m_tabCtrl.Create(TCS_TABS|WS_CHILD|WS_VISIBLE,rec,this,IDC_TABCTRL);  //添加控件按钮名称  m_tabCtrl.InsertItem(0,"车辆信息列表");  m_tabCtrl.InsertItem(1,"地图列表");  //对话框页面  m_page1.Create(IDD_DIALOG1,GetDlgItem(IDC_TABCTRL));  m_page2.Create(IDD_DIALOG2,GetDlgItem(IDC_TABCTRL));  //显示第一个页面  m_carList.ShowWindow(SW_SHOW);  //设置第一个页面显示  m_tabCtrl.SetCurSel(0);  

5、WM_SIZE消息响应,该函数是为了使得页面布局和FormView页面大小相同,不然会出现空闲部分,显得布局很不美观,在对应的函数中添加如下代码:

 

[cpp]  view plain copy m_tabCtrl.MoveWindow(0,0,cx,cy);  m_page1.MoveWindow(0,25,cx,cy);  m_page2.MoveWindow(0,25,cx,cy);  

6、TabCtrl控件TCN_SELCHANGE消息响应,这里并没有静态的TabCtrl控件,所以需要动态添加,方法如下:

 

1)在CFormView的cpp文件中的BEGIN_MESSAGE_MAP......END_MESSAGE_MAP()之间加入:ON_NOTIFY(TCN_SELCHANGE,IDC_TABCTRLDOWN,OnSelChangeTab)

2)在在CFormView的h文件中的{{AFX_MSG(CFormViewDown).....//}}AFX_MSG之间加入:afx_msg void OnSelChangeTab(NMHDR *pNMHDR,LRESULT *pResult);

3)实现OnSelChangeTab(NMHDR *pNMHDR,LRESULT *pResult)

 

[cpp]  view plain copy void CFormViewDown::OnSelChangeTab(NMHDR *pNMHDR,LRESULT *pResult)  {      //获取所选择的页面      int nCurSel = m_tabCtrl.GetCurSel();      if(nCurSel == 0)      {             //页面一显示,页面二隐藏          m_page1.ShowWindow(SW_SHOW);          m_page2.ShowWindow(SW_HIDE);      }      else if(nCurSel == 1)      {             页面二显示,页面一隐藏          m_driverInfo.ShowWindow(SW_SHOW);          m_carInfo.ShowWindow(SW_HIDE);      }      *pResult = 0;  }  

转载于:https://www.cnblogs.com/Dennis-mi/articles/4493982.html

相关资源:自绘CTabCtrl;重写CTabCtrl
最新回复(0)