Tab Control控件示例教程

2024-08-23 04:08
文章标签 教程 示例 控件 tab control

本文主要是介绍Tab Control控件示例教程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 新建一个MFC工程, 取名MyTab, 选择Dialog based, 然后Finish. 
2. 删除对话框上默认添加的三个控件. 添加Tab Control控件并在Property属性中设置ID为IDC_TABTEST 在More Styles里勾上Bottom. 调速尺寸使其布满整个对话框, 我这边Tab Control的尺寸最后为164X203. 在ClassWizard为其添加变量, 变量名为m_tab. 类型为CTabCtrl.    
3. 在对话框的初始化函数OnInitDialog里面添加如下代码:    
clip_image001m_tab.InsertItem(0,"参数一");  //添加参数一选项卡    
clip_image001[1]m_tab.InsertItem(1,"参数二");  //添加参数二选项卡    
clip_image001[2]m_tab.InsertItem(2,"结果");    //添加结果选项卡

4.在对话框资源里面添加三个对话框资源, ID分别命名为IDD_PARA1, IDD_PARA2, IDD_RESULT. 字体为宋体, 字号为9, style为Child, Border为None, 宽度调整为161. 再分别为其添加对应的基于CDialog类CPara1, CPara2, CResult.    
5. 在CMyTabDlg类中添加三个成员变量m_para1, m_para2, m_result, 分别是三个子对话框的实例. 代码如下:

clip_image001[3]CResult m_result;    
clip_image001[4]CPara2 m_para2;    
clip_image001[5]CPara1 m_para1;    
6. 在IDD_PARA1对话框上添加静态文本控件内容为"参数一" 再在后面插入一个文本框控件, 用ClassWizard将其关联为一个int型变量,名为m_nPara1;    
在IDD_PARA2对话框上添加静态文本控件内容为"参数二" 再在后面插入一个文本框控件, 用ClassWizard将其关联为一个int型变量,名为m_nPara2;    
在IDD_RESULT对话框上添加静态文本控件内容为"结果" 再在后面插入一个文本框控件, 用ClassWizard将其关联为一个int型变量,名为m_nResult;    
7. 为CPara1类添加成员函数int GetParaValue() 代码如下:    
clip_image001[6]int CPara1::GetParaValue()    
clip_image002clip_image003...{    
clip_image004 return m_nPara1;    
clip_image005}    
为CPara2类添加成员函数int GetParaValue() 代码如下:    
clip_image001[7]int CPara2::GetParaValue()    
clip_image002[1]clip_image003[1]...{    
clip_image004[1] return m_nPara2;    
clip_image005[1]}    
为CResult类添加成员函数void SetResultValue(int nResult) 代码如下:    
clip_image001[8]void CResult::SetResultValue(int nResult)    
clip_image002[2]clip_image003[2]...{    
clip_image004[2]     m_nResult = nResult;    
clip_image005[2]}    
8. 在IDD_MYTAB_DIALOG对话框的初始化函数OnInitDialog里面添加如下代码:    
clip_image001[9]//关联对话框,并且将IDC_TABTEST控件设为父窗口    
clip_image001[10]m_para1.Create(IDD_PARA1,GetDlgItem(IDC_TABTEST));    
clip_image001[11]m_para2.Create(IDD_PARA2,GetDlgItem(IDC_TABTEST));    
clip_image001[12]m_result.Create(IDD_RESULT,GetDlgItem(IDC_TABTEST));    
clip_image001[13]
clip_image001[14]//获得IDC_TABTEST客户区大小    
clip_image001[15]CRect rs;    
clip_image001[16]m_tab.GetClientRect(&rs);    
clip_image001[17]//调整子对话框在父窗口中的位置    
clip_image001[18]rs.top+=1;     
clip_image001[19]rs.bottom-=60;     
clip_image001[20]rs.left+=1;     
clip_image001[21]rs.right-=2;     
clip_image001[22]
clip_image001[23]//设置子对话框尺寸并移动到指定位置    
clip_image001[24]m_para1.MoveWindow(&rs);    
clip_image001[25]m_para2.MoveWindow(&rs);    
clip_image001[26]m_result.MoveWindow(&rs);    
clip_image001[27]
clip_image001[28]//分别设置隐藏和显示    
clip_image001[29]m_para1.ShowWindow(true);    
clip_image001[30]m_para2.ShowWindow(false);    
clip_image001[31]m_result.ShowWindow(false);    
clip_image001[32]
clip_image001[33]//设置默认的选项卡    
clip_image001[34]m_tab.SetCurSel(0);

9. 添加Tab Control控件的TCN_SELCHANGE事件响应函数OnSelchangeTabtest(NMHDR* pNMHDR, LRESULT* pResult) ,函数体代码如下:

clip_image001[35]int CurSel = m_tab.GetCurSel();    
clip_image001[36] switch(CurSel)    
clip_image002[3]clip_image003[3] ...{    
clip_image004[3] case 0:    
clip_image004[4]         m_para1.ShowWindow(true);    
clip_image004[5]         m_para2.ShowWindow(false);    
clip_image004[6]         m_result.ShowWindow(false);    
clip_image004[7] break;    
clip_image004[8] case 1:    
clip_image004[9]         m_para1.ShowWindow(false);    
clip_image004[10]         m_para2.ShowWindow(true);    
clip_image004[11]         m_result.ShowWindow(false);    
clip_image004[12] break;    
clip_image004[13] case 2:    
clip_image004[14]         m_para1.ShowWindow(false);    
clip_image004[15]         m_para2.ShowWindow(false);    
clip_image004[16]         m_result.ShowWindow(true);    
clip_image004[17] break;    
clip_image004[18] default:    
clip_image004[19]         ;    
clip_image005[3]     }     
clip_image001[37]
clip_image001[38]    *pResult = 0;

10. 在IDD_MYTAB_DIALOG对话框下面添加一个按钮, 标题为"计算" 为其添加事件响应函数, 代码如下:

clip_image001[39]m_para1.UpdateData(true);    
clip_image001[40]     m_para2.UpdateData(true);    
clip_image001[41]     m_result.SetResultValue(m_para1.GetParaValue()+m_para2.GetParaValue());    
clip_image001[42]     m_result.UpdateData(false);   

这篇关于Tab Control控件示例教程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1098305

相关文章

Java使用Curator进行ZooKeeper操作的详细教程

《Java使用Curator进行ZooKeeper操作的详细教程》ApacheCurator是一个基于ZooKeeper的Java客户端库,它极大地简化了使用ZooKeeper的开发工作,在分布式系统... 目录1、简述2、核心功能2.1 CuratorFramework2.2 Recipes3、示例实践3

Spring Boot 3.4.3 基于 Spring WebFlux 实现 SSE 功能(代码示例)

《SpringBoot3.4.3基于SpringWebFlux实现SSE功能(代码示例)》SpringBoot3.4.3结合SpringWebFlux实现SSE功能,为实时数据推送提供... 目录1. SSE 简介1.1 什么是 SSE?1.2 SSE 的优点1.3 适用场景2. Spring WebFlu

springboot security快速使用示例详解

《springbootsecurity快速使用示例详解》:本文主要介绍springbootsecurity快速使用示例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录创www.chinasem.cn建spring boot项目生成脚手架配置依赖接口示例代码项目结构启用s

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则

golang 日志log与logrus示例详解

《golang日志log与logrus示例详解》log是Go语言标准库中一个简单的日志库,本文给大家介绍golang日志log与logrus示例详解,感兴趣的朋友一起看看吧... 目录一、Go 标准库 log 详解1. 功能特点2. 常用函数3. 示例代码4. 优势和局限二、第三方库 logrus 详解1.

SpringBoot实现MD5加盐算法的示例代码

《SpringBoot实现MD5加盐算法的示例代码》加盐算法是一种用于增强密码安全性的技术,本文主要介绍了SpringBoot实现MD5加盐算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习... 目录一、什么是加盐算法二、如何实现加盐算法2.1 加盐算法代码实现2.2 注册页面中进行密码加盐2.

MySQL Workbench 安装教程(保姆级)

《MySQLWorkbench安装教程(保姆级)》MySQLWorkbench是一款强大的数据库设计和管理工具,本文主要介绍了MySQLWorkbench安装教程,文中通过图文介绍的非常详细,对大... 目录前言:详细步骤:一、检查安装的数据库版本二、在官网下载对应的mysql Workbench版本,要是

Redis 中的热点键和数据倾斜示例详解

《Redis中的热点键和数据倾斜示例详解》热点键是指在Redis中被频繁访问的特定键,这些键由于其高访问频率,可能导致Redis服务器的性能问题,尤其是在高并发场景下,本文给大家介绍Redis中的热... 目录Redis 中的热点键和数据倾斜热点键(Hot Key)定义特点应对策略示例数据倾斜(Data S

JavaScript Array.from及其相关用法详解(示例演示)

《JavaScriptArray.from及其相关用法详解(示例演示)》Array.from方法是ES6引入的一个静态方法,用于从类数组对象或可迭代对象创建一个新的数组实例,本文将详细介绍Array... 目录一、Array.from 方法概述1. 方法介绍2. 示例演示二、结合实际场景的使用1. 初始化二

通过Docker Compose部署MySQL的详细教程

《通过DockerCompose部署MySQL的详细教程》DockerCompose作为Docker官方的容器编排工具,为MySQL数据库部署带来了显著优势,下面小编就来为大家详细介绍一... 目录一、docker Compose 部署 mysql 的优势二、环境准备与基础配置2.1 项目目录结构2.2 基