在VC++中使用Tab Control控件

对于直接使用 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
{•••
protected:
virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持
virtual BOOL OnInitDialog(); //没有这个,则在这里重载
DECLARE_MESSAGE_MAP()
public:
CTabCtrl m_tab;
CLoginTab1 m_login_tab1;
CLoginTab2 m_login_tab2;
•••

}


//主对话框实现文件
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;
}

你可能感兴趣的:(在VC++中使用Tab Control控件)