mfc中使用Tab Control控件

本文详细介绍如何在MFC程序中使用TabControl控件,并通过创建子对话框来实现Tab页的功能。从添加控件到编写代码,一步步指导读者完成整个过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先我们新建一个MFC程序就简简单单搞个Dialog~

转自:
[原创]mfc中使用Tab Control控件 - ありがと - --?òɡ--

 

然后在资源找到Tab Control控件将他拖进来~

[原创]mfc中使用Tab Control控件 - ありがと - --?òɡ--

 

虽然面板显示了这个控件但它完全不会起作用因为在代码层次来讲它完全未实现只是在资源文件中有所体现

[原创]mfc中使用Tab Control控件 - ありがと - --?òɡ--

 

之后选择主Dialog, 右键选择添加变量, MFC会根据控件在实现类里边添加关于Tab Control的变量当然喇你也可以自己在代码处添加.
public
:
         CTabCtrl m_tab;


然后我们再创建两个对话框将它们放在Tab Page里边一一对应要记得讲对话框的属性设置为style-childborder-none.

[原创]mfc中使用Tab Control控件 - ありがと - --?òɡ--

 

[原创]mfc中使用Tab Control控件 - ありがと - --?òɡ--

 

跟住在代码添加相应头文件和变量.
#include "TabPage1.h"
#include "TabPage2.h"
public:
         CTabCtrl m_tab;
         CTabPage1m_page1;
         CTabPage2 m_page2;


OnInitDialog要添加部分代码.
         // TODO: 在此添加额外的初始化代码
         //==========================================================
         //
初始化TAB
         TCITEM tc1,tc2;
         tc1.mask = TCIF_TEXT;
         tc1.pszText = _T("
第一页");
         tc2.mask = TCIF_TEXT;
         tc2.pszText = _T("
第二页");

         m_tab.InsertItem(0, &tc1);
         m_tab.InsertItem(1, &tc2); //
到这里只是添加了两个tab

         CRect rec;
         m_tab.GetClientRect(&rec);//
获得TAB控件的坐标

         //
定位选项卡页的位置,这里可以根据情况自己调节偏移量
         rec.bottom -= 2;
         rec.left += 1;
         rec.top += 27;
         rec.right -= 3;

         //
创建子页面
//         m_page1.Create(IDD_DIALOG1,GetDlgItem(IDC_TAB));
  //       m_page2.Create(IDD_DIALOG2,GetDlgItem(IDC_TAB));

         m_page1.Create(IDD_DIALOG1,&m_tab);
         m_page2.Create(IDD_DIALOG2,&m_tab); 
         //
将子页面移动到指定的位置
         m_page1.MoveWindow(&rec);
         m_page2.MoveWindow(&rec);
         //
显示子页面
         m_page1.ShowWindow(SW_SHOW);
         m_page2.ShowWindow(SW_HIDE);
         //===============================================================

还有帮Tab Control设置事件. 

[原创]mfc中使用Tab Control控件 - ありがと - --?òɡ--

 
    // TODO: 在此添加控件通知处理程序代码
    switch(m_tab.GetCurSel())
    {
      case0:
            m_page1.ShowWindow(SW_SHOW);
            m_page2.ShowWindow(SW_HIDE);
            break;
       case1:
            m_page1.ShowWindow(SW_HIDE);
            m_page2.ShowWindow(SW_SHOW);
            break;
      default:
            break;
    }

然后就可以用了..

[原创]mfc中使用Tab Control控件 - ありがと - --?òɡ--
 

 

更多信息可以参考http://apps.hi.baidu.com/share/detail/12680680

NOTE:要注意!! CPage本身就是一个Dialog, 即这里用TabControl控制的子页面是Dialog类型而不是什么Wnd什么View那些 奇怪的东西可能可以通过m_page1.Create(IDD_DIALOG1,GetDlgItem(IDC_TAB1));绑定其他类型.. 曾经在CPage里边又加CDialog

<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(7371) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zheguangqi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值