您的位置:知蚁博客 » 程序设计 » VC中TabCtrl控件的用法(附示例源码)

VC中TabCtrl控件的用法(附示例源码)

作者: 发布时间:2011-04-14 分类:程序设计 标签: 5,427人浏览

  在MFC中的TabCtrl可以实现类似于选项卡的功能,水母的《水石居存款助手》就打算采用TabCtrl控件,因为存款的种类比较多,每种的利息算法都不大一样,全部放在一块设计起来比较复杂,用TabCtrl控件可以很好的解决这个问题,可以用一个标签页来计算一种或者几种类型的储蓄种类的利息算法。既然决定用,那就得先看看这玩意怎么个用法,下面就看看要在VC中使用TabCtrl控件都需要做些什么工作吧。

1、工程与主对话框创建  

  新建一个基于对话框的MFC应用程序,添加一个TabCtrl控件,并绑定CTabCtrl控件类型的变量(在VC 6.0中通过类向导来添加,Ctrl+W快捷键可直接调出),变量名定为m_tabCtrl(可以自由指定)。

2、tab标签对话框创建

  每个tab标签都可以显示一个对话框,因此我们需要先设计对话框,这个和主对话框的设计类似的,只是在属性设置中需要指定Style=Child,Border=None。至于对话框资源的添加,在ResourceView中的Dialog上右击,选择“Insert Dialog”即可,按照同样方法添加三个Dialog,可以用默认的名字,也可以自己重新起名字。

  接下来就是为这三个对话框资源添加对话框类,添加也很简单,在对话框资源上双击即可,去默认的名字就行。好了,现在我们有了三个新的对话框资源以及三个对话框类,列举IDD和类名如下(这些是默认的值,如果你在上面步骤中自己重命名了,那以重命名的为准,这些信息下面会用到):

class      IDD
CDialog1   IDD_DIALOG1
CDialog2   IDD_DIALOG2
CDialog3   IDD_DIALOG3  

3、在主对话框中添加tab标签对话框对象

  tab标签对话框可以算作是主对话框的一部分,因此我们在主对话框中分别增加三个tab对话框类型的变量,如下(变量名可根据个人喜号自由指定):

CDialog1 m_Dlg1;
CDialog2 m_Dlg2;
CDialog3 m_Dlg3;

记得要包含相应的tab对话框的头文件。

4、初始化

  这一步的工作就是将各个tab对话框与TabCtrl控件的每一个标签项对于起来,这些工作在主对话框的OnInitDialog()中完成,具体的代码如下:

m_tabCtrl.InsertItem(0,_T(“活期储蓄”));
m_tabCtrl.InsertItem(1,_T(“整存整取”));
m_tabCtrl.InsertItem(2,_T(“通知存款”));

m_Dlg1.Create(IDD_DIALOG1,&m_tabCtrl);
m_Dlg2.Create(IDD_DIALOG2,&m_tabCtrl);
m_Dlg3.Create(IDD_DIALOG3,&m_tabCtrl);

CRect rc;
m_tabCtrl.GetClientRect(&rc);
rc.top += 20;
rc.bottom -= 4;
rc.left += 4;
rc.right -= 4;

m_Dlg1.MoveWindow(&rc);
m_Dlg2.MoveWindow(&rc);
m_Dlg3.MoveWindow(&rc);

m_Dlg1.ShowWindow(SW_SHOW);

m_tabCtrl.SetCurFocus(0);

  通过InsertItem添加三个标签项,接下来创建三个tab对话框并与TabCtrl绑定,后面rc和MoveWindow的操作时调整对话框的位置的操作,否则你会发现程序运行后看不到选项卡了(原因是默认的tab对话框的大小为主对话框显示区域的大小,因此把tab标签覆盖掉了,所以要先获取主对话框的大小,然后做下调整)。最后两行代码是设置显示第一个标签项。

5、标签(或选项卡)切换

  在主对话框中处理TabCtrl控件的TCN_SELCHANGE消息即可,添加消息处理函数的地方还是通过类向导来完成。这个函数中的主要操作就是设置各个选项卡谁显示、谁不显示而已,代码页比较简单,只是如果标签太大的话,代码可能会比较多,本示例中的代码如下:

void CTabCtrlTestDlg::OnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult)
{
CRect rc;
m_tabCtrl.GetClientRect(&rc);

switch(m_tabCtrl.GetCurSel())
{
case 0:
m_Dlg1.ShowWindow(SW_SHOW);
m_Dlg2.ShowWindow(SW_HIDE);
m_Dlg3.ShowWindow(SW_HIDE);
m_Dlg1.SetFocus();
break;
case 1:
m_Dlg2.ShowWindow(SW_SHOW);
m_Dlg1.ShowWindow(SW_HIDE);
m_Dlg3.ShowWindow(SW_HIDE);
m_Dlg2.SetFocus();
break;
case 2:
m_Dlg3.ShowWindow(SW_SHOW);
m_Dlg2.ShowWindow(SW_HIDE);
m_Dlg1.ShowWindow(SW_HIDE);
m_Dlg3.SetFocus();
break;
default:
break;
}

*pResult = 0;
}

至此,我们的选项卡式对话框就出来了!


原创文章请注明转载于知蚁博客,本文地址:http://www.letuknowit.com/archives/51

相关文章

我来说说

(必须)

(必须,保密)

你确定你已经看过文章了?
取消

无觅相关文章插件,快速提升流量