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里面添加如下代码: 
m_tab.InsertItem(0,"参数一");  //添加参数一选项卡 
m_tab.InsertItem(1,"参数二");  //添加参数二选项卡 
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, 分别是三个子对话框的实例. 代码如下:

CResult m_result; 
CPara2 m_para2; 
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() 代码如下: 
int CPara1::GetParaValue() 
...{ 
 return m_nPara1; 

为CPara2类添加成员函数int GetParaValue() 代码如下: 
int CPara2::GetParaValue() 
...{ 
 return m_nPara2; 

为CResult类添加成员函数void SetResultValue(int nResult) 代码如下: 
void CResult::SetResultValue(int nResult) 
...{ 
     m_nResult = nResult; 

8. 在IDD_MYTAB_DIALOG对话框的初始化函数OnInitDialog里面添加如下代码: 
//关联对话框,并且将IDC_TABTEST控件设为父窗口 
m_para1.Create(IDD_PARA1,GetDlgItem(IDC_TABTEST)); 
m_para2.Create(IDD_PARA2,GetDlgItem(IDC_TABTEST)); 
m_result.Create(IDD_RESULT,GetDlgItem(IDC_TABTEST)); 
 
//获得IDC_TABTEST客户区大小 
CRect rs; 
m_tab.GetClientRect(&rs); 
//调整子对话框在父窗口中的位置 
rs.top+=1; 
rs.bottom-=60; 
rs.left+=1; 
rs.right-=2; 
 
//设置子对话框尺寸并移动到指定位置 
m_para1.MoveWindow(&rs); 
m_para2.MoveWindow(&rs); 
m_result.MoveWindow(&rs); 
 
//分别设置隐藏和显示 
m_para1.ShowWindow(true); 
m_para2.ShowWindow(false); 
m_result.ShowWindow(false); 
 
//设置默认的选项卡 
m_tab.SetCurSel(0);

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

int CurSel = m_tab.GetCurSel(); 
 switch(CurSel) 
 ...{ 
 case 0: 
         m_para1.ShowWindow(true); 
         m_para2.ShowWindow(false); 
         m_result.ShowWindow(false); 
 break; 
 case 1: 
         m_para1.ShowWindow(false); 
         m_para2.ShowWindow(true); 
         m_result.ShowWindow(false); 
 break; 
 case 2: 
         m_para1.ShowWindow(false); 
         m_para2.ShowWindow(false); 
         m_result.ShowWindow(true); 
 break; 
 default: 
         ; 
     }     
 
    *pResult = 0;

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

m_para1.UpdateData(true); 
     m_para2.UpdateData(true); 
     m_result.SetResultValue(m_para1.GetParaValue()+m_para2.GetParaValue()); 
     m_result.UpdateData(false); 

C++ MFC Tab Control控件的详细使用的更多相关文章

  1. MFC编程 | tab control控件的使用

    因为课程需要,会用到MFC编程,所以讲一些经验总结下,以便日后使用查询. // tab control控件的使用 // 建立一个Cluster窗口,通过tab可以切换成C-Means和Fuzzy C- ...

  2. 【MFC】Tab Control 控件的使用(转)

    原文转自 http://blog.csdn.net/hustspy1990/article/details/5425365 1.先建立一个对话框MFC应用程序,然后在工具箱里面把Tab Control ...

  3. 通过编写串口助手工具学习MFC过程——(七)添加Tab Control控件

    通过编写串口助手工具学习MFC过程 因为以前也做过几次MFC的编程,每次都是项目完成时,MFC基本操作清楚了,但是过好长时间不再接触MFC的项目,再次做MFC的项目时,又要从头开始熟悉.这次通过做一个 ...

  4. 在VC++中使用Tab Control控件

    系统环境:Windows 7软件环境:Visual Studio 2008 SP1本次目的:在模态或非模态对话框中使用Tab Control控件,及引申在单/多文档中使用 查阅MSDN文档,对于创建T ...

  5. C++ 关于MFC List Control 控件的使用事项 原创

    1\在开发项目时,使用到了 listcontrol 控件,就一些问题,做一下备注,以备以后使用 (1)  给list项目 删除所有的项目  DeleteAllItems(); (2) 给list项目 ...

  6. mfc Picture Control 控件属性

    知识点: Picture Control 控件属性 CStatic类 图片控件 图片控件使用 一.图片控件属性 Picture Control 属性: Type:Frame //框架 Type:Etc ...

  7. MFC List Control 控件添加单元格编辑,实现可编辑重写

    在实现随机生成四则运算的个人项目中,目前已经完成基本功能,想要把程序变成一个Windows界面的程序.原本以为学习过MFC,应该很快就能完成.但是由于以前用的都是VC6.0,这次用了VS2010,稍微 ...

  8. MFC 使用MFC EditBrowse Control控件选择文件或者文件夹

    从工具箱中拖拽一个MFC EditBrowse Control到窗体中, 通过设置“Browse Mode”属性指定“文件浏览”还是“文件夹浏览” 可以通过添加对象的方式将其与一个CString se ...

  9. 利用MFC Picture Control控件 加载bmp,png

    1.在资源视图,选择PictureControl,并且在属性中把Type设置为Bitmap. 2.加载PNG CStatic* pWnd = (CStatic*)GetDlgItem(IDC_PIC) ...

随机推荐

  1. Visual Studio 20年

    这是一个暴露年龄的话题,如果一个程序员从第一个版本开始使用Visual Studio的话,现在应该是40多岁的中年大叔了.我的程序员生涯是从Visual basic 6.0 (vb6)开始的,一晃就过 ...

  2. 过滤器Filter的四种拦截方式

    过滤器有四种拦截方式!分别是:REQUEST.FORWARD.INCLUDE.ERROR. REQUEST: 直接访问目标资源时执行过滤器.包括:在地址栏中直接访问.表单提交.超链接.重定向,只要在地 ...

  3. solr7.1.0学习笔记(10)---Solr发布到Tomcat

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/weixin_39082031/article/details/79069554 将solr作为一个单 ...

  4. vue的异步组件按需加载

    当build打包后,app.js过大的时候,可以考虑用异步组件的方式. import HomeHeader from "./components/Header"; import H ...

  5. 关于python无法显示中文的问题:SyntaxError: Non-ASCII character '\xe4' in file test.py on line 3, but no encoding declared。

    [已解决]关于python无法显示中文的问题:SyntaxError: Non-ASCII character '\xe4' in file test.py on line 3, but no enc ...

  6. mysql给查询的结果添加序号

    1.法一: select  (@i:=@i+1)  i,a.url from  base_api_resources a  ,(select   @i:=0)  t2 order by a.id de ...

  7. Linux下卸载安装jdk

    1.检查一下系统中的jdk版本 [root@localhost software]# java -version 显示: openjdk version "1.8.0_102" O ...

  8. tornado项目注意点

    大体框架思想 如果你做的项目是偏向中小型的话,MTV或者MVC已经足够支撑起整个项目,而如果你做的项目比较大大话,或者说可能以后的业务量很大的话,那你就需要用到四层架构的思想了,那么我们就各自分析下俩 ...

  9. Ubuntu 14.04 配置OpenCv 2.4.9

      安装工具 g++ 链接:http://www.cnblogs.com/LQLin168/p/6844593.html 下载OpenCv 2.4.9(官网地址):http://opencv.org/ ...

  10. Andriod开发第一步-部署环境(搬运&&总结)

         第一步:安装JDK      第二步:配置Windows上JDK的变量环境      第三步:下载安装Eclipse      第四步:下载安装Android SDK 配置了JDK变量环境, ...