MFC对话框中添加TAB CONTROL空间
1.建立MFC对话框工程
2.删除对话框上的静态文本信息和“确定”,“取消”按钮。
3.添加控件工具栏中拖入即可(如果没有控件工具栏,在Tools—Customize—Toolbars—Controls打勾即可)
4.把Tab Control控件托到和对话框一样大。
5.右击选择Properties 修改ID:IDC_TABCONTROL;再右击选择ClassWizard,在弹出的对话框中选择Member Variables页,在Control IDs栏中选中IDC_TABCONTROL,双击来添加该控件的变量:m_tab;类型为CTabCtrl(默认)。
6.在初始化函数OnInitDialog()(// TODO: Add extra initialization here)里面添加选项卡代码;
m_tab.InsertIterm(0,"page1");
m_tab.InsertIterm(0,"page2");
7.为控件添加选项卡(子对话框):page1和page2;
步骤如下:菜单中选择Insert—Resources—Dialog,点击New。这样完成了对话框的添加,再去掉按钮;在右击属性中的Style中的下拉框中分别改为Child和None(子窗口和无边框模式或直接建立FORMVIEW对话框)。ID取名为IDD_PAGE1(注意ID名定义好后不要轻易改动,否则在下面类定义好后修改会导致变量名不一致)。注意这里的Tab Control选项是在上面,要在Properties中把子对话框的坐标改一下(一般的X:0 Y:15)。
按照以上方法再建立一个对话框,ID取名为IDD_PAGE2。
8.添加子对话框对应的类:双击刚建立的对话框,提示添加一个新类:取名为Cpage1;另一取名为Cpage2。
到此,我们先整理一下思路:前面先添加了控件,设置了控件的ID和变量名(m_tab);为控件添加了两个选项卡(page1和page2),用代码为选项卡取了名字,又添加了类。下面要类声明变量(即类的对象)。因为下面要在每个选项卡中添加自己需要的功能,即要操作的对象是选项卡(即子对话框)。
9.为类添加变量:在CTABCONTROLDlg类中添加代码作为主对话框中的成员变量(通过Workspace的类窗口中右击Add Member Variable来添加,否则容易出错);
Cpage1 m_page1;
Cpage2 m_page2;
10.在OnInitDialog()函数中添加代码完成TAB和选项卡的初始化。代码如下:
//关联主对话框和选项卡
m_page1.Create(IDD_PAGE1,GetDlgItem(IDC_TABCONTROL));
m_page2.Create(IDD_PAGE2,GetDlgItem(IDC_TABCONTROL));
m_page1.ShowWindow(true); //显示选项卡page1
m_page2.ShowWindow(false); //不显示选项卡page2
m_tab.SetCurSel(0); //默认显示选项卡为page1
以上代码是设置Tab Control控件的最简代码,还有设置子对话框的大小和位置等可按情况添加。
11.添加Tab Control控件的事件相应函数(即点击选项卡名字的事件发生时,执行这个函数),通过双击添加的Tab Control来修改,在本程序中该函数名为OnSelchangeTabcontrol()。以下是需要添加的代码:
int CurSel = m_tab.GetCurSel();
switch(CurSel)
{
case 0:
m_page1.ShowWindow(true);
m_page2.ShowWindow(false);
break;
case 1:
m_page1.ShowWindow(false);
m_page2.ShowWindow(true);
break;
default:
;
}
在该函数建立时,MFC会自动添加一句 *pResult = 0; 以上代码加在*pResult = 0;之前。
如果你的程序编译后报错,且提示有未定义的函数,但查看之后明明已经定义了。可能是因为在Word中拷贝过去时是全角字符,重新输入就行了。如果编译没错,执行后没有选项卡按钮,可能是子对话框的坐标设置不对,或者可以修改Tab Control控件的属性(Properties)中More Styles便签(或称为选项卡,这个属性对话框也是一个Tab Control控件)中,把Bottom打勾,把选项卡按钮改到底部。
对于选项卡中如何设置则按照需求设置,这里只用于识别哪个是page1,哪个是page2。运行后的界面如下图: