博客
关于我
MFC之标签控件26
阅读量:241 次
发布时间:2019-03-01

本文共 2107 字,大约阅读时间需要 7 分钟。

为了实现基于对话框的TabControl项目,按照以下步骤操作:

  • 创建基于对话框的MFC项目。

  • 在主窗口对话框的窗口中添加CTabCtrl控件,可以使用类定位:

    CTabCtrl m_tabCtrl;m_tabCtrl.Create(nullptr, NULL, WS_TABCONTROL | WS_VISIBLE | WS_DISABLED, 0);

    将CTabCtrl添加到主窗口的对话框中。

  • 创建并实现CTabSheet类,继承自CTabCtrl,添加必要的成员变量和方法:

    class CTabSheet : public CTabCtrl {private:    int m_nNumOfPages;    int m_nCurrentPage;    CDialog** m_pPages;    UINT* m_IDD;    LPCTSTR* m_Title;public:    CTabSheet() { m_nNumOfPages = 0; m_nCurrentPage = 0; }    ~CTabSheet() {}};
  • 实现CTabSheet的关键方法:

    bool CTabSheet::AddPage(LPCTSTR title, CDialog* pDialog, UINT ID) {    if (m_nNumOfPages >= MAXPAGE) return FALSE;    m_nNumOfPages++;    m_pPages[m_nNumOfPages - 1] = pDialog;    m_IDD[m_nNumOfPages - 1] = ID;    m_Title[m_nNumOfPages - 1] = title;    return TRUE;}void CTabSheet::Show() {    int i = 0;    for (; i < m_nNumOfPages; ++i) {        if (AfxGetMainWnd()) {            InsertItem(i, m_Title[i]);        } else {            return;        }    }    for (; i < m_nNumOfPages; ++i) {        m_pPages[i]->ShowWindow(SW_HIDE);    }    m_pPages[0]->ShowWindow(SW_SHOW);    SetRect();}void CTabSheet::SetRect() {    CRect tabRect, itemRect;    GetClientRect(&tabRect);    GetItemRect(0, &itemRect);    int nX = itemRect.left;    int nY = itemRect.bottom + 1;    int nXc = tabRect.right - itemRect.left - 2;    int nYc = tabRect.bottom - nY - 2;    m_pPages[0]->SetWindowPos(&wndTop, nX, nY, nXc, nYc, SWP_SHOWWINDOW);    for (int nCount = 1; nCount < m_nNumOfPages; ++nCount) {        m_pPages[nCount]->SetWindowPos(&wndTop, nX, nY, nXc, nYc, SWP_HIDEWINDOW);    }}
  • 在主窗口对话框的头文件中添加对话框类的头文件,并声明对象成员变量:

    #include "MyDlg1.h"#include "MyDlg2.h"CTabSheet m_tabSheet;CDialog* m_dlg1 = nullptr;CDialog* m_dlg2 = nullptr;
  • 在主窗口的OnInitDialog函数中初始化CTabSheet:

    BOOL CMainDlg::OnInitDialog() {    CDialogEx::OnInitDialog();    // ... 其他初始化代码 ...    // 初始化CTabSheet    m_tabSheet.AddPage(_T("系统设置"), m_dlg1, IDD_DIALOG1);    m_tabSheet.AddPage(_T("参数设置"), m_dlg2, IDD_DIALOG2);    m_tabSheet.Show();}
  • 确保对话框作为CTabSheet的子窗口并正确嵌入:

    • 设置对话框的父窗口为CTabSheet。
    • 调整对话框的边框属性,确保它们作为CTabSheet的页面显示。
  • 通过以上步骤,可以实现基于对话框的TabControl,实现多个页面的切换和显示。

    转载地址:http://itfv.baihongyu.com/

    你可能感兴趣的文章
    PHP 支持8种基本的数据类型
    查看>>
    php 放大镜,放大镜放大图片效果
    查看>>
    PHP 数据库连接池实现
    查看>>
    php 数组 区别,PHP中数组的区别
    查看>>
    PHP 数组怎么添加一个元素
    查看>>
    PHP 文件操作
    查看>>
    php 文字弹幕效果代码,HTML5文字弹幕效果
    查看>>
    php 时间日期函数,获取今天开始时间,结束时间
    查看>>
    php 标准规范
    查看>>
    PHP 浮点型精度运算相关问题
    查看>>
    php 浮点型计算精度问题
    查看>>
    php 特定时间段统计,jpgraph某个时间段的数据统计
    查看>>
    php 生成csv mac下乱码
    查看>>
    php 生成证书 签名及验签
    查看>>
    PHP 的标准输入与输出
    查看>>
    php 笔记 (早前的,很乱)
    查看>>
    PHP 第一天
    查看>>
    Redis使用量暴增,快速定位有哪些大key在作怪
    查看>>
    PHP 统计数据功能 有感
    查看>>
    SpringBoot处理JSON数据
    查看>>