标签页的使用

目录

1、引用TabSheet.h和TabSheet.cpp文件:

2、主窗口添加标签页: 

 (1)、标签页的创建和属性更改

 (2)、添加俩个标签页的类

(3)、主窗口添加成员变量 

(4)、代码实现部分 


1、引用TabSheet.h和TabSheet.cpp文件:

MFC引入选项卡控件的类(TabSheet.h和TabSheet.cpp)的目的:

在MFC中,标签页通常通过CTabCtrl类来实现。你可以将TabSheet类作为CTabCtrl的一个子类,以便更方便地管理和操作标签页。

TabSheet.h

#if !defined(AFX_TABSHEET_H__42EE262D_D15F_46D5_8F26_28FD049E99F4__INCLUDED_)
#define AFX_TABSHEET_H__42EE262D_D15F_46D5_8F26_28FD049E99F4__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// TabSheet.h : header file
///
// CTabSheet window
#define MAXPAGE 16class CTabSheet : public CTabCtrl
{// Construction
public:CTabSheet();// Attributes
public:// Operations
public:// Overrides// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(CTabSheet)//}}AFX_VIRTUAL// Implementation
public:int GetCurSel();int SetCurSel(int nItem);void Show();void SetRect();BOOL AddPage(LPCTSTR title, CDialog *pDialog, UINT ID);virtual ~CTabSheet();// Generated message map functions
protected:LPCTSTR m_Title[MAXPAGE];UINT m_IDD[MAXPAGE];CDialog* m_pPages[MAXPAGE];int m_nNumOfPages;int m_nCurrentPage;//{{AFX_MSG(CTabSheet)afx_msg void OnLButtonDown(UINT nFlags, CPoint point);//}}AFX_MSGDECLARE_MESSAGE_MAP()
};///{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.#endif // !defined(AFX_TABSHEET_H__42EE262D_D15F_46D5_8F26_28FD049E99F4__INCLUDED_)

TabSheet.cpp

// TabSheet.cpp : implementation file
//#include "stdafx.h"
//#include "MyPos.h"
#include "TabSheet.h"#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif/
// CTabSheetCTabSheet::CTabSheet()
{m_nNumOfPages = 0;m_nCurrentPage = 0;
}CTabSheet::~CTabSheet()
{
}BEGIN_MESSAGE_MAP(CTabSheet, CTabCtrl)//{{AFX_MSG_MAP(CTabSheet)ON_WM_LBUTTONDOWN()//}}AFX_MSG_MAP
END_MESSAGE_MAP()/
// CTabSheet message handlersBOOL CTabSheet::AddPage(LPCTSTR title, CDialog *pDialog, UINT ID)
{if (MAXPAGE == m_nNumOfPages)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::SetRect()
{CRect tabRect, itemRect;int nX, nY, nXc, nYc;GetClientRect(&tabRect);GetItemRect(0, &itemRect);nX = itemRect.left;nY = itemRect.bottom + 1;nXc = tabRect.right - itemRect.left - 2;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);}void CTabSheet::Show()
{for (int i = 0; i < m_nNumOfPages; i++){m_pPages[i]->Create(m_IDD[i], this);InsertItem(i, m_Title[i]);}m_pPages[0]->ShowWindow(SW_SHOW);for (int i = 1; i < m_nNumOfPages; i++)m_pPages[i]->ShowWindow(SW_HIDE);SetRect();}void CTabSheet::OnLButtonDown(UINT nFlags, CPoint point)
{CTabCtrl::OnLButtonDown(nFlags, point);if (m_nCurrentPage != GetCurFocus()){m_pPages[m_nCurrentPage]->ShowWindow(SW_HIDE);m_nCurrentPage = GetCurFocus();m_pPages[m_nCurrentPage]->ShowWindow(SW_SHOW);//      m_pPages[m_nCurrentPage]->SetFocus();}
}int CTabSheet::SetCurSel(int nItem)
{if (nItem < 0 || nItem >= m_nNumOfPages)return -1;int ret = m_nCurrentPage;if (m_nCurrentPage != nItem){m_pPages[m_nCurrentPage]->ShowWindow(SW_HIDE);m_nCurrentPage = nItem;m_pPages[m_nCurrentPage]->ShowWindow(SW_SHOW);//      m_pPages[m_nCurrentPage]->SetFocus();CTabCtrl::SetCurSel(nItem);}return ret;
}int CTabSheet::GetCurSel()
{return CTabCtrl::GetCurSel();
}

CTabsheet作为他的子类会提供对选项卡控件的操作和管理 

2、主窗口添加标签页: 

下面就是我们要显示的标签页最终UI

 (1)、标签页的创建和属性更改

创建我们直接添加Dialog即可

属性更改的目的为了让他不再是一个窗口框架样式,变成一个窗口中标签 

1、boder None :去掉窗口边框

2、style  Child:变成子窗口相当于一个窗口的标签

第二个标签创建和第一个相同

 (2)、添加俩个标签页的类

此时有UI文件但是没有.h和.cpp文件,所以我们添加类。

(3)、主窗口添加成员变量 

(4)、代码实现部分 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/111904.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI爆文变现-写作项目-脚本配置教程-解放双手

之前给大家分享过AI爆文的写作教程&#xff0c;没看过的可以看下对应的教程&#xff1a; AI爆文撸流量主保姆级教程2.0 因为是怼量&#xff0c;为了高效完成文章&#xff0c;我用python脚本实现了自动写文章的功能&#xff0c;发布文章目前还是要手动进行。 AI爆文教程参考&…

【论文阅读】点云地图动态障碍物去除基准 A Dynamic Points Removal Benchmark in Point Cloud Maps

【论文阅读】点云地图动态障碍物去除基准 A Dynamic Points Removal Benchmark in Point Cloud Maps 终于一次轮到了讲自己的paper了 hahaha&#xff0c;写个中文的解读放在博客方便大家讨论 Title Picture Reference and prenotes paper: https://arxiv.org/abs/2307.07260 …

高校教务系统登录页面JS分析——华东交通大学

高校教务系统密码加密逻辑及JS逆向 本文将介绍高校教务系统的密码加密逻辑以及使用JavaScript进行逆向分析的过程。通过本文&#xff0c;你将了解到密码加密的基本概念、常用加密算法以及如何通过逆向分析来破解密码。 本文仅供交流学习&#xff0c;勿用于非法用途。 一、密码加…

【LeetCode刷题(数据结构与算法)】:合并两个有序链表

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的 **思路&#xff1a;定义一个头尾指针置为NULL while循环依次比较两个链表的值的大小 遍历链表 比较完数值大小过后连接到tail的尾部 然后各自的链表的节点的next指针指向下一…

电脑开不了机用U盘重装系统Win10教程

如果我们遇到了电脑开不起机的问题&#xff0c;这给我们的正常使用带来了很大的影响。这时候我们可以借助U盘重装系统的方法&#xff0c;轻松应对这一问题。下面小编给大家详细介绍关于用U盘给开不机的电脑重装Win10系统的教程步骤&#xff0c;操作后用户就能正常使用电脑了。 …

龙芯3A3000源码编译安装deepin-ide

安装环境 系统为统信专业版1050 CPU为龙芯3A3000 安装步骤 1.安装所有依赖库 sudo apt-get install git debhelper cmake qt5-qmake qtbase5-dev qttools5-dev qttools5-dev-tools lxqt-build-tools libssl-dev llvm llvm-dev libclang-dev libutf8proc-dev libmicrohttpd-d…

MySQL学习(六)——视图和触发器

文章目录 1. 视图1.1 视图语法1.2 检查选项1.3 视图的更新1.4 视图的作用 2. 触发器2.1 介绍2.2 语法介绍2.3 触发器示例2.3.1 插入数据触发器2.3.2 修改数据触发器2.3.3 删除数据触发器 1. 视图 视图&#xff08;View&#xff09;是一种虚拟存在的表。视图中的数据并不在数据…

react antd实现upload上传文件前form校验,同时请求带data

最近的需求&#xff0c;两个下拉框是必填项&#xff0c;点击上传按钮&#xff0c;如果有下拉框没选要有提示&#xff0c;如图 如果直接使用antd的Upload组件&#xff0c;一点击文件选择的窗口就打开了&#xff0c;哪怕在Button里再加点击事件&#xff0c;也只是&#xff08;几乎…

震惊!idea专业版如何配置maven国内源手把手教学

目录 1、创建一个maven项目 2、配置maven国内源&#xff08;阿里&#xff09; 3、在等待过程中&#xff0c;设置新项目的maven配置 4、若下载失败&#xff0c;删除repository文件夹内所有文件&#xff0c;多下几次即可 5、为何配置国内源 1、创建一个maven项目 选择以下三…

微信好友消息自动回复,让你轻松应对好友咨询

有许多用微信做业务、做微商的小伙伴&#xff0c;微信有时候消息太多看不过来&#xff0c;漏看消息&#xff0c;或者不知道怎么引导用户&#xff0c;让他们看到你想让他们看到的消息。微信上用户多微信上的信息容易漏掉&#xff0c;怎么能有时效的回复客户呢&#xff1f;此时你…

vue3.0 + element plus upload图片 上传

直接上图吧&#xff1a; 记录一下&#xff0c;方便后续遇到啥问题

【C++杂货铺】一文总结C++中的异常

文章目录 一、C语言传统的处理错误的方式二、C异常三、异常的使用3.1 异常的抛出和捕获3.1.1 异常的抛出和匹配原则3.1.2 在函数调用链中异常栈展开匹配原则 3.2 异常的重新抛出3.3 异常安全3.4 异常规范 四、自定义异常体系五、C标准库的异常体系六、异常的优缺点6.1 优点6.2 …

WINCC趋势画面模板

加载按钮 Sub OnClick(Byval Item) Dim Chart,tag,ctrl,objTrendWnd,objTimeAxis,objValAxis,objTrendSet ChartScreenItems("组合框2")Chart tagChart.SelTextSet ctrl ScreenItems("控件1")threadSet objTrend…

【EI会议征稿】第三届应用力学与先进材料国际学术会议(ICAMAM 2024)

第三届应用力学与先进材料国际学术会议&#xff08;ICAMAM 2024&#xff09; 2024 3rd International Conference on Applied Mechanics and Advanced Materials&#xff08;ICAMAM 2024&#xff09; 第三届应用力学与先进材料国际学术会议&#xff08;ICAMAM 2024&#xff09…

Python处理PDF——PyMuPDF的安装与使用详解

​​​​​​​ 1、PyMuPDF简介 1. 介绍 在介绍PyMuPDF之前&#xff0c;先来了解一下MuPDF&#xff0c;从命名形式中就可以看出&#xff0c;PyMuPDF是MuPDF的Python接口形式。 MuPDF MuPDF 是一个轻量级的 PDF、XPS和电子书查看器。MuPDF 由软件库、命令行工具和各种…

字符串排序程序

字符串排序程序&#xff0c;对一个字符串中的数值进行从小到大的排序 例如排序前给定的字符串为" 20 78 9 -7 88 36 29" 排序后&#xff1a; -7 9 20 29 36 78 88 要求使用包装类对数值类型的字符串转换成整型进行排序。 public class StringSort {public static vo…

..\FreeRTOS\include\FreeRTOS.h(1277): error: #65: expected a “;“出现的这个错误标志解决方法

..\FreeRTOS\include\FreeRTOS.h(1277): error: #65: expected a ";" 近来写软件过程中&#xff0c;当在某一个.C文件中我申明了FreeRTOS.h文件&#xff0c;结果呢编译是出现报错了 经过查找&#xff0c;是因为我在另外一个文件声明了 #include <stdbool.h> …

使用按钮从 SAP 系统内打开 Excel 文件

了解如何通过 SAP 屏幕上创建的按钮打开所需的 Excel 文件。为了演示这一点&#xff0c;将指导您完成以下步骤。 使用 del 命令删除 SAP 上不必要的元素添加一个按钮&#xff0c;单击后打开弹出窗口创建一个函数来选择 excel 文件创建打开所需 excel 文件的函数 定制 登录 S…

Python 框架学习 Django篇 (三) 链接数据库

只要你是做后端开发的&#xff0c;那么就离不开各种数据库&#xff0c;Django框架对各种数据库都非常友好&#xff0c;比如常见的PostgreSQL、MySQL、SQLite、Oracle&#xff0c;django都对他们提供了统一调用api&#xff0c;我们这里主要使用mysql数据库作为演示 一、ORM机制 …

10月20日星期五今日早报简报微语报早读

10月20日星期五&#xff0c;农历九月初六&#xff0c;早报微语早读分享。 1、上海4岁走失女童遗体在宁波市某滩涂被发现&#xff0c;排除刑事案件&#xff1b; 2、中国多个实体和个人被指涉伊朗军工制造将遭美国非法单边制裁&#xff0c;外交部&#xff1a;坚决反对&#xff…