MFC学习笔记07:标签页控件Tab Control

工具箱中选择 Tab Control

为标签页关联类
添加类

添加Tab Control控件,属性设置:ID:IDC_TAB1
为Tab Control控件绑定控件变量,变量名为m_tab,类型为CTabCtrl。
在TabCtrlDlg.cpp文件中,找到初始化函数OnInitDialog并在里面添加如下代码:

	// TODO: 在此添加额外的初始化代码
	m_tab.InsertItem(0, TEXT("第一页"));
	m_tab.InsertItem(1, TEXT("第二页"));

添加两个对话框
去掉边框:将border的值改为none
弹出方式修改为子窗口 将style的值改为child
添加静态文本框,改为“第一页”;
再为其添加对应的基于CDialog类CPage1。(其他标签页执行相同操作)

在项目dlg头文件中添加两个标签页的头文件并创建对象,如下:

//头文件
#include "CPage1.h"
#include "CPage2.h"
//创建私有对象
CPage1 m_Page1;
CPage2 m_Page2;

在初始化函数中添加代码:

	//关联对话框, 并且将IDC_TABTEST控件设为父窗口
	m_Page1.Create(IDD_DIALOG1, GetDlgItem(IDC_TAB1));
	m_Page2.Create(IDD_DIALOG2, GetDlgItem(IDC_TAB1));

	//获得IDC_TABTEST客户区大小 
	CRect rs;
	m_tab.GetClientRect(&rs);
	//调整子对话框在父窗口中的位置 
	rs.top += 30;
	rs.bottom -= 60;
	rs.left += 1;
	rs.right -= 2;

	//设置子对话框尺寸并移动到指定位置 
	m_Page1.MoveWindow(&rs);
	m_Page2.MoveWindow(&rs);

	//分别设置隐藏和显示 
	m_Page1.ShowWindow(true);
	m_Page2.ShowWindow(false);

	//设置默认的选项卡 
	m_tab.SetCurSel(0);

双击Tab Control控件(或者右击/添加事件处理程序,消息类型TCN_SELCHANGE)添加代码如下:

int CurSel = m_tab.GetCurSel();
switch (CurSel)
{
case 0:
	m_Page1.ShowWindow(true);
	m_Page2.ShowWindow(false);
	break;
case 1:
	m_Page2.ShowWindow(true);
	m_Page1.ShowWindow(false);
	break;
default:
	;
	}

以上就是标签页控件的使用方法。学这一块儿的内容真的是费了大力气。

方法二是用到了CTabSheet 出现的问题自己还解决不了,目前只能mark一下。
~~将两个文件添加到项目下TabSheet的h和cpp文件,在解决方案中添加现有项。若添加成功,则在类试图中有CTabSheet类。
为标签页修改属性,右键为这两个窗口添加类CDLG1和CDLG2,在出现的h文件中可以看到关联。
为主标签页设置变量,变量类型改为CTabSheet,
在初始化函数所在的cpp文件中声明两个标签页的h文件,在dlg的h文件中也声明这两个头文件,并在类的定义中创建对象CDLG1 dlg1;CDLG2 dlg2;在初始化函数中添加以下代码,

n_tab.AddPage(TEXT("系统设置"), &dlg1, IDD_DIALOG1);
n_tab.AddPage(TEXT("系统管理"), &dlg2, IDD_DIALOG2);
//显示
n_tab.Show();

如此操作出现大量bug
1。错误描述:fatal error C1010:在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include"stdafx.h"”?
解决方式:
一.

  1. 在解决方案资源管理器中,右击相应的.cpp文件,点击“属性”
  2. 在左侧配置属性中,点开“C/C++”,单击“预编译头”
  3. 更改右侧第一行的“创建/使用预编译头”,把选项从“使用预编译头(/Yu)”改成“不使用预编译头”
  4. 注:每一个报错的.cpp都要如此更改哦
    在dlg的h文件中加入#include “TabSheet.h”~~
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值