MFC:Tab Control 标签控件

最近更新于 2025-03-16 16:25

测试环境

使用示例

新建一个 MFC 应用 tabControlProject,基于对话框
file

删除预留控件,拖放一个 Tab Control 上去
file

在控件上右键添加变量
file

变量名:tabControl
file

插入一个对话框
file

属性 ID 设为 MAIN_DIALOG,边框设为None,样式设为Child
file

界面上放点控件
file

在对话框空白处右键添加类 MainDialog
file
file

同样方式再创建一个对话框,属性 ID 设为 HELP_DIALOG,边框设为None,样式设为Child,界面上 放点控件
file

同样为这个对话框添加类 HelpDialog
file

编辑 CtabControlProjectDlg 类头文件,写入
(注意引用 MainDialog 和 HelpDialog 头文件)

private:
    MainDialog* mainDlg = nullptr;
    HelpDialog* helpDlg = nullptr;

这个用于存储子对话框窗口
file

然后再编辑它的源文件中的 OnInitDialog 方法,添加在 TODO 注释的下面

    // 添加标签
    this->tabControl.InsertItem(0, L"主页");
    this->tabControl.InsertItem(1, L"帮助");

    // 标签控件铺满窗口
    CRect winRect;
    GetClientRect(winRect);
    this->tabControl.MoveWindow(winRect);

    // 创建子对话框对象
    this->mainDlg = new MainDialog();
    this->helpDlg = new HelpDialog();

    // 创建子对话框,并以标签页为父窗口
    this->mainDlg->Create(MAIN_DIALOG, &this->tabControl);
    this->helpDlg->Create(HELP_DIALOG, &this->tabControl);

    // 子对话框铺满标签控件
    this->tabControl.AdjustRect(FALSE, winRect); // FALSE 时在传入的矩形上剪切掉标签页区域
    this->mainDlg->MoveWindow(winRect);
    this->helpDlg->MoveWindow(winRect);

    // 设置默认选中第一个标签,并显示对应子窗口
    this->tabControl.SetCurSel(0);
    this->mainDlg->ShowWindow(SW_SHOW);

file

在标签控件上右键属性,点开⚡标志,添加 TCN_SELCHANGE 事件回调
file

写入

    // 获取当前选中项
    int sel = this->tabControl.GetCurSel();
    switch (sel)
    {
        case 0:
        {
            // 显示主窗口,隐藏帮助窗口
            this->mainDlg->ShowWindow(SW_SHOW);
            this->helpDlg->ShowWindow(SW_HIDE);
            break;
        }
        case 1:
        {
            // 隐藏主窗口,显示帮助窗口
            this->mainDlg->ShowWindow(SW_HIDE);
            this->helpDlg->ShowWindow(SW_SHOW);
            break;
        }
    }

这样就实现了点击标签页切换显示的窗口
file

调试运行效果
file

file

MFC:Tab Control 标签控件
Scroll to top
打开目录