博客
关于我
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 如何把字符串转换成浮点数
    查看>>
    python 如果文件夹不存在就创建文件夹
    查看>>
    Python 如果有很多或以收缩形式
    查看>>
    Python 子进程 Popen 与 Pyinstaller
    查看>>
    Python 子进程 Popen.communicate() 等价于 Popen.stdout.read()?
    查看>>
    Python 子进程 Popen:为什么会出现“ls *.txt“?不行?
    查看>>
    Python 子进程参数
    查看>>
    python 字典 key 和value 互换
    查看>>
    Python 字典 vs If 语句速度
    查看>>
    python 字典sorted自定义排序,按照key or value排序
    查看>>
    python 字典和列表区别_元组列表和字典的主要区别是什么?
    查看>>
    python 字符串中特定字符替换,截取
    查看>>
    Python 字符串总结
    查看>>
    python 字符串显示中文_Python字符串开头的b"、u"、r"与中文乱码
    查看>>
    Python 字符串的几种拼装方式
    查看>>
    python 存入数据库bigint_python基础_MySQL的bigint类型
    查看>>
    python 学习 面向对象编程
    查看>>
    Python 学习小结
    查看>>
    Python 学习日记第三篇 -- 字典
    查看>>
    Python 学习笔记(一)Data type
    查看>>