对于直接使用 CTabCtrl 在对话框内
1. 在对话框编辑区内,添加一个 Tab Control 控件到资源模板里面,设置它的控制 ID
2. 使用添加成员变量向导,为控件添加一个 CTabCtrl 类型的成员变量,你可以使用这个变量调用 CTabCtrl 的成员函数
3. 对话框类的映射处理功能可以处理任何你需要处理的标签控件消息。有关更多信息,请参阅消息映射函数。
4. 在 OnInitDialog() 函数里面,设置 CTabCtrl 的风格。
对于在非对话框窗口使用 CTabCtrl
1. 定义在视图或窗口类的控件。
2. 调用控件的创建成员函数,可能在 OnInitialUpdate 中,可能在父窗口的 OnCreate 处理函数早期(如果你是子类的控件)。设置控件的风格。
下面介绍在对话框中添加 Tab Control 控件,工程不一定是要 MFC 基于对话框形式,单文档视图类派生自 CFormView 的工程也行,或是任何工程弹出的对话框 ( 如登录界面等等 ) 都行 ( 个人没有都去实验,但理论上应该可以,看了下面就知道。 )
1. 首先在对话框资源上添加一个 Tab Control 控件 ID 为 IDC_LOGIN_TAB ,根据需要修改其属性,然后为其添加成员变量 m_tab ,类型为CTabCtrl
2. 需要几个选项卡,则在对话框资源添加几个对话框,在这里我添加两个选项卡,则要添加两个对话框,其 ID 分别为 IDD_TAB1_DIALOG, IDD_TAB2_DIALOG 它们的属性 style 为 Child, Border 为 None ,其他的再根据自己调整。然后分别为其添加对应的基于 CDialog 类CLoginTab1 , CLoginTab2
3. 在主对话框添加子对话框头文件,然后再添加三个成员变量,为子对话框添加实例。在 OnInitDialog() 函数初始化 Tab Control 控件显示,若对话框没有 OnInitDialog() 函数,则重载这个函数,具体如下:
//主对话框头文件
class LoginUser : public CDialog}
//主对话框实现文件
BOOL LoginUser::OnInitDialog()
{
CDialog::OnInitDialog();
m_tab.InsertItem(0,_T("系统登录"));
m_tab.InsertItem(1,_T("服务器设置"));
m_login_tab1.Create(IDD_TAB1_DIALOG,GetDlgItem(IDC_LOGIN_TAB));
m_login_tab2.Create(IDD_TAB2_DIALOG,GetDlgItem(IDC_LOGIN_TAB));
//获得IDC_TABTEST客户区大小
CRect rs;
m_tab.GetClientRect(&rs);
//调整子对话框在父窗口中的位置,根据实际修改
rs.top+=25;
rs.bottom-=60;
rs.left+=1;
rs.right-=10;
//设置子对话框尺寸并移动到指定位置
m_login_tab1.MoveWindow(&rs);
m_login_tab2.MoveWindow(&rs);
//分别设置隐藏和显示
m_login_tab1.ShowWindow(true);
m_login_tab2.ShowWindow(false);
//设置默认的选项卡
m_tab.SetCurSel(0);
return TRUE;
}