您的位置:首页 > 其它

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中增加两个页面
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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: