MFC TabCtrl 控件简单使用
2014-06-20 13:37
232 查看
本文记录 MFC 中 TabCtrl 控件的简单使用,另外还包括TabCtrl 控件选项卡标题的隐藏及用按钮控制页面切换。
新建基于对话框的程序,添加一个 TabCtrl 控件,为其定义一个控件变量 m_tabCtrl ;插入两个对话框作为TabCtrl控件的页面,需将对话框属性Border设为None、style设为Child,给两个对话框添加类。在应用程序对话框类中添加两个页面对话框类型的变量 CEnPage m_enPageDlg,CDePage m_dePageDlg,另外定义类变量CDialog *m_pPageDlg[2] 用来保存对话框指针,定义类变量 int m_nCurSelTab 用来保存当前页面索引,以方便引用。
在应用程序对话框的初始化函数中添加下面的代码,将页面对话框与TabCtrl控件关联起来:
为TabCtrl控件的TCN_SELCHANGE事件添加消息响应函数:
效果截图如下:
为了使TabCrtl控件不显示选项卡标题,通过其他方式(如按钮)来控制,此时,需要把TabCrtl控件的“Owner Draw Fixed”属性设为 True,且不要使用TabCrtl的InsertItem()函数来插入选项卡,而是直接使用要贴在选项卡页面上的对话框的创建函数Create(IDD_DLG, &m_tabCtrl)来关联,然后通过页面对话框来控制其显隐即可。
其中两个按钮的响应代码如下:
新建基于对话框的程序,添加一个 TabCtrl 控件,为其定义一个控件变量 m_tabCtrl ;插入两个对话框作为TabCtrl控件的页面,需将对话框属性Border设为None、style设为Child,给两个对话框添加类。在应用程序对话框类中添加两个页面对话框类型的变量 CEnPage m_enPageDlg,CDePage m_dePageDlg,另外定义类变量CDialog *m_pPageDlg[2] 用来保存对话框指针,定义类变量 int m_nCurSelTab 用来保存当前页面索引,以方便引用。
在应用程序对话框的初始化函数中添加下面的代码,将页面对话框与TabCtrl控件关联起来:
// 在TabCtrl中增加两个页面 m_tabCtrl.InsertItem(0, _T("加密")); m_tabCtrl.InsertItem(1, _T("解密")); // 创建两个对话框页面 m_enPageDlg.Create(IDD_ENDLG, &m_tabCtrl); m_dePageDlg.Create(IDD_DEDLG, &m_tabCtrl); // 设定页面对话框在TabCtrl中的显示范围: CRect rcTab; m_tabCtrl.GetClientRect(rcTab); // 以下更改的范围为该测试中的最合适范围,临近边界值 rcTab.top += 22; rcTab.bottom -= 2; rcTab.left += 1; rcTab.right -= 3; m_enPageDlg.MoveWindow(&rcTab); m_dePageDlg.MoveWindow(&rcTab); // 保存页面对话框对象指针到数组中 m_pPageDlg[0] = &m_enPageDlg; m_pPageDlg[1] = &m_dePageDlg; // 设置初始显示页面 m_pPageDlg[0]->ShowWindow(SW_SHOW); m_pPageDlg[1]->ShowWindow(SW_HIDE); m_nCurSelTab = 0;
为TabCtrl控件的TCN_SELCHANGE事件添加消息响应函数:
void CEncryptFileTest1Dlg::OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult) { // TODO: 在此添加控件通知处理程序代码 int nCurSelTab = m_tabCtrl.GetCurSel(); m_pPageDlg[m_nCurSelTab]->ShowWindow(SW_HIDE); m_pPageDlg[nCurSelTab]->ShowWindow(SW_SHOW); m_nCurSelTab = nCurSelTab; *pResult = 0; }
效果截图如下:
为了使TabCrtl控件不显示选项卡标题,通过其他方式(如按钮)来控制,此时,需要把TabCrtl控件的“Owner Draw Fixed”属性设为 True,且不要使用TabCrtl的InsertItem()函数来插入选项卡,而是直接使用要贴在选项卡页面上的对话框的创建函数Create(IDD_DLG, &m_tabCtrl)来关联,然后通过页面对话框来控制其显隐即可。
其中两个按钮的响应代码如下:
void CEncryptFileTest1Dlg::OnBnClickedButton1() { ShowSelPageDlg(0); } void CEncryptFileTest1Dlg::OnBnClickedButton2() { ShowSelPageDlg(1); } void CEncryptFileTest1Dlg::ShowSelPageDlg(int nCurSel) { int nOldSelTab = m_nCurSelTab; m_nCurSelTab = nCurSel; m_pPageDlg[nOldSelTab]->ShowWindow(SW_HIDE); m_pPageDlg[m_nCurSelTab]->ShowWindow(SW_SHOW); }
相关文章推荐
- 改进过的一个联动控件,使用更加简单方便
- Input(file) 控件的简单使用!
- 简单介绍 VC2003 使用 ATL 开发 ActiveX 控件
- 第8天 Symbian学习之开发实践:简单控件和复合控件的使用
- MFC控件 状态条的简单介绍及使用 CStatusBar
- 简单控件Panel和PlaceHolder的使用区别
- 简单控件Panel和PlaceHolder的使用区别
- UpdateProgress控件简单使用
- 使用objectdatasource结合数据绑定控件进行简单三层架构的开发
- 最简单的服务器控件的使用
- 改进过的一个联动控件,使用更加简单方便,提供源代码
- 简单使用COMBO(下拉列表框)控件
- datagrid的几点简单应用,功能包括radio的单选,checkbox的多选,鼠标移动到行上颜色变深,链接传递多参数等功能。这里radio和checkbox都使用的是HTML控件。
- 日期控件Calendar的简单使用
- 一套使用简单的Ajax服务器控件-Anthem.NET
- 一套使用简单的Ajax服务器控件-Anthem.NET
- 关于使用TreeView 控件的简单介绍
- winform使用模式窗体,简单操作控件
- VB.NET 中 使用 ListView 控件的简单例子
- 简单控件Panel和PlaceHolder的使用区别