首页 > 其他分享 >TabControl控件的简单使用-添加tab

TabControl控件的简单使用-添加tab

时间:2022-12-11 15:35:07浏览次数:39  
标签:控件 pDlg 对话框 添加 tab rc TabControl

1、首先创建一个MFC对话框框架,在对话框资源上从工具箱中添加上一个Tab Control 控件,根据需要修改一下属性,然后右击控件,为这个控件添加一个变量,将此控件跟一个CTabCtrl类变量绑定在一起,这里设为m_tab

  1. 在资源中插入两个对话框,作为Tab Control控件切换的界面,然后必须将这两个对话框的Border属性设置为None,Style设置为Child,可以在这两个页面中添加自己的控件,稍后会在Tab Control 控件添加这两个测试页,为创建的两个对话框建立两个MFC类,CObjInfoDlg1,CObjInfoDlg2,添加类的方法:右击对话框界面,在弹出框中选择添加类;

image
image

  1. 在主对话框类中添加

  2. 在主对话框类中实现virtual BOOL OnInitDialog(); 重写以增加对话框的初始化

BOOL CDlgDemoV1::OnInitDialog()
{
	CDialogExt::OnInitDialog();

	// TODO:  在此添加额外的初始化
		// 初始化tabctrl
	m_tab.InsertItem(0, _T("测试页面1"));
	m_tab.InsertItem(1, _T("测试页面2"));

	// 创建两个对话框
	m_page1.Create(OBJ_INFO_PAGE1, &m_tab);
	m_page2.Create(OBJ_INFO_PAGE2, &m_tab);


	//设定在Tab内显示的范围
	CRect rc;
	m_tab.GetClientRect(rc);
	rc.top += 20;
	rc.bottom -= 0;
	rc.left += 0;
	rc.right -= 0;
	m_page1.MoveWindow(&rc);
	m_page2.MoveWindow(&rc);

	//把对话框对象指针保存起来
	pDlg[0] = &m_page1;
	pDlg[1] = &m_page2;

	//显示初始页面
	pDlg[0]->ShowWindow(SW_SHOW);
	pDlg[1]->ShowWindow(SW_HIDE);
	//保存当前选择
	m_CurSelTab = 0;

	return TRUE;  // return TRUE unless you set the focus to a control
	// 异常: OCX 属性页应返回 FALSE
}
  1. 添加切换tab事件
    image
void CDlgDemoV1::OnTcnSelchangeObjTab(NMHDR* pNMHDR, LRESULT* pResult)
{
	// TODO: 在此添加控件通知处理程序代码
	//把当前的页面隐藏起来
	pDlg[m_CurSelTab]->ShowWindow(SW_HIDE);
	//得到新的页面索引
	m_CurSelTab = m_tab.GetCurSel();
	//把新的页面显示出来
	pDlg[m_CurSelTab]->ShowWindow(SW_SHOW);
	*pResult = 0;
}
  1. 结果
    image
    image

标签:控件,pDlg,对话框,添加,tab,rc,TabControl
From: https://www.cnblogs.com/SpringBreath/p/16973615.html

相关文章

  • IFormattable
    实现IFormattable的Tostring的方法,实现为类型输出格式化字符串。publicstringToString(stringformat,IFormatProviderformatProvider){switch(......
  • 为文本框控件添加滚动条-CEdit
    在VS2015环境下操作创建文本框控件设置控件属性效果......
  • 重走Android路 之 挑几个基本控件玩玩(上卷)
    LZ-Says:冬瓜嫌弃LZ这个系列,说他都能看懂,哎呦我去,这个给人气的呀~真想把冬瓜剁吧剁吧熬成粥~高考了,祝愿各位学子功成归来~!!!基本控件使用Android为我们提供了很多UI样式,但是在......
  • Table表格的css样式代码详解 tableStyle.css
    原文地址:https://www.jb51.net/article/220293.htm漂亮的table表格样式css源码漂亮的table表格样  <html><head><title></title><styletype="text/css......
  • flutter tabbar切换监听及索引获取
    参考:https://www.jianshu.com/p/f1347e658fa6 定义lateTabController_controller; 在 voidinitState()中监听 tabController=TabController(leng......
  • postgresql/lightdb PL/pgSQL return setof和TABLE的区别及动态SQL执行
    在pg中,广泛的使用了表函数代替视图,返回集合有两种定义,setof和table。他们的区别在于table明确定义了字段名和类型,如下:CREATEFUNCTIONevents_by_type_1(text)RETURNSTABL......
  • 【Chart控件】折线图
    多Y轴显示效果: <Windowx:Class="Chart.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://sche......
  • Vue Vue-Router params 传参 为空 path定义参数 参数 param is not repeatable
    我在Vue-Router4.0.3版本上出现这个问题因为官方在2022年8月22日时废除了未定义的传参方式,所以必须使用定义的params。解决办法:在配置路由时:path路径上带上传值的key值......
  • vue table刷新单行数据
    1.给el-table加上标记方法<el-tablev-loading="loading":data="tagList1"@selection-change="handleSelectionChange1":row-class-name="tableRowClassName"> ta......
  • 【Chart控件】开篇
    WPF没有系统的Chart控件,因此要使用第三方的chart控件库1、在Nuget中添加DotNetProjects.DataVisualization.Toolkit。Chart控件结构        ......