在MFC应用程序中使用Tab标签页

在MFC程序中使用Tab Control控件,具体步骤如下

1.创建项目,主窗体为IDD_TEST_DIALOG

2.在mianDlg中右键添加Tab Control控件

即在Tab 控件中添加控制变量


变量名为tabCtrl


3.在资源视图中添加dialog窗体(作为Tab子对话框),ID为IDD_DIALOG1,修改IDD_DIALOG1的style属性为child(表明为子对话框),Border属性为None

4.在IDD_DIALOG1中添加类tab1,用他来在主dialog中用来操作Tab1



5.在主对话框的Tab控件中添加变量tab1_ctrl(子对话框类)



6.在主对话框的头文件(testDlg.h)中添加子对话框的头文件

#include "tab1.h"//因为在记下来要用到子对话框中添加的类tab1

7.在主对话框类的初始化方法*(OnInitDialog())中添加对Tab控件的初始化(在第一次运行程序的时候对空间的初始化)

tabCtrl.InsertItem(0,_T("测试Tab1"));//第一个Tab页标签显示“测试Tab1”

	tab1_ctrl.Create(IDD_DIALOG1,GetDlgItem(IDC_TAB1));//创建标签页,IDD_DIALOG1:子对话框ID,IDC_TAB1:Tab控件ID

	//获取TAB的客户端矩形框,从而设置各属性页在TAB上的物理位置-xcy
    CRect rs;	//控制标签控件客户区的位置和大小-xcy
    tabCtrl.GetClientRect(&rs);	//获取标签控件客户区Rect
    rs.top+=20;
    rs.bottom-=4;
    rs.left+=4;
    rs.right-=4;

	//根据rs设置子对话框尺寸
	tab1_ctrl.SetWindowPos(NULL,rs.left,rs.top,rs.Width(),rs.Height(),SWP_SHOWWINDOW);

8.添加多个Tab页,每+1就重复一次3-7步骤

9.在添加完Tab后,程序运行时候,点击Tab页切换发现并没有出现预期的界面切换的效果,总是显示第一个Tab页,这时候需要对主对话框的Tab控件的控制变量tabCtrl添加点击Tab,切换页面的处理:双击Tab控件,在OnTcnSelchangeTab1方法中添加:

CRect tabRect;    // 标签控件客户区的Rect   
  
    // 获取标签控件客户区Rect,并对其调整,以适合放置标签页   
    tabCtrl.GetClientRect(&tabRect);   
    tabRect.left += 4;   
    tabRect.right -= 4;   
    tabRect.top += 20;   
    tabRect.bottom -= 4;   
  
    switch (tabCtrl.GetCurSel())   
    {   
    // 如果标签控件当前选择标签为“测试Tab1”,则显示tab1对话框,隐藏tab2对话框   
    case 0:   
        tab1_ctrl.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW);   
        tab2_ctrl.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);   
        break;   
    // 如果标签控件当前选择标签为“测试Tab1”,则隐藏tab1对话框,显示tab2对话框   
    case 1:   
        tab1_ctrl.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);   
        tab2_ctrl.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW);   
        break;   
    default:   
        break;   
    }   









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值