博客
关于我
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/

    你可能感兴趣的文章
    Python Seborn热图数据的动态更新
    查看>>
    Python Seborn绘制空白直方图
    查看>>
    Python Selenium - 获取href值
    查看>>
    Python Selenium实现自动化测试及Chrome驱动使用!
    查看>>
    Python Selenium搭建UI自动化测试框架
    查看>>
    Python Selenium模块详解
    查看>>
    Python selenium爬取影评生成词云图
    查看>>
    python selenium自动化测试报告
    查看>>
    Python selenium自动化测试框架实战 —— 登录测试案例
    查看>>
    Python Selenium设计模式 —— POM
    查看>>
    Python Serial:如何使用 read 或 readline 函数一次读取多个字符
    查看>>
    Python set([]) 如何检查两个对象是否相等?一个对象需要定义哪些方法来自定义它?
    查看>>
    Python setup.py:数据文件无法复制目录:不存在或不是常规文件
    查看>>
    Python setuptools sdist:仅安装版本化文件
    查看>>
    Python Shell下使用matplotlib
    查看>>
    Python Slice How-to,我知道Python Slice,但我怎么才能使用内置的Slice对象呢?
    查看>>
    python socket分包发送数据
    查看>>
    python socket模块_Python socket模块实现TCP服务端客户端
    查看>>
    Python SOCKS5代理客户端HTTPS
    查看>>
    Python Soc网络分析:通过使用函数迭代列表来计算机会网络
    查看>>