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

    你可能感兴趣的文章
    oracle00205报错,Oracle控制文件损坏报错场景
    查看>>
    Oracle10g EM乱码之快速解决
    查看>>
    Oracle10g下载地址--多平台下的32位和64位
    查看>>
    Oracle10g安装了11g的ODAC后,PL/SQL连接提示TNS:无法解析指定的连接标识符
    查看>>
    oracle11g dataguard物理备库搭建(关闭主库cp数据文件到备库)
    查看>>
    Oracle11G基本操作
    查看>>
    Oracle11g服务详细介绍及哪些服务是必须开启的?
    查看>>
    Oracle11g静默安装dbca,netca报错处理--直接跟换操作系统
    查看>>
    oracle12安装软件后安装数据库,然后需要自己配置监听
    查看>>
    Oracle——08PL/SQL简介,基本程序结构和语句
    查看>>
    Oracle——distinct的用法
    查看>>
    Oracle、MySQL、SQL Server架构大对比
    查看>>
    oracle下的OVER(PARTITION BY)函数介绍
    查看>>
    Oracle中DATE数据相减问题
    查看>>
    Oracle中merge into的使用
    查看>>
    oracle中sql查询上月、本月、上周、本周、昨天、今天的数据!
    查看>>
    oracle中sql的case语句运用--根据不同条件去排序!
    查看>>
    Oracle中Transate函数的使用
    查看>>
    oracle中关于日期问题的汇总!
    查看>>
    Oracle中常用的语句
    查看>>