【mfc】标签页

这个东西不必介绍了,现在在一个对话框中,还有几个没有标签页呢?不过尽管是很常见的东西,它的现实并不简单,它不是像VB那样拖拖控件就弄出来的,拖完之后还有比较复杂的一段过程,当然,弄熟了就不复杂了,弄几下就搞点了。不熟的话,就慢慢在网上找资料吧,在当前mfc已经越来越冷门的情况下,哪种找不到的感觉,真的是嘿嘿了。

一、基本目标

下面就举个例子来说明,mfc中的标签页,有一个标签页控件,在标签1标签2标签3中各自有一个输入框,在各个输入框输入完东西之后,点击确定按钮,就能够弹窗,显示用户输入了什么,用户还能返回修改。

二、制作过程

1、首先新建一个静态DLL,没有任何东西,基于对话框的MFC工程,自带的两个按钮放在下方,如下图,在里面拖入一个Tab控件:

2、标签页的样式修改一下,把“多行”勾上,这个“多行”主要是防止之后,你的标签页添加得过多,能够像如下的样子现实,美观一些,不会再后面多出一个蛋疼<>按钮,甚至一些操作系统还没有这个按钮,你就慢慢向前翻吧,不过一般用不到这么多个标签页的。

3、主对话框默认就已经建立好类函数,但依然要打开类向导,在成员变量这个标签页,你看,标签页是多么地常见,你不会你好意思跟别人说你会mfc,为这个标签页添加一个成员变量m_tab,其它的类型什么的默认即可。

4、之后像《【mfc】利用单一对话框内的分页技术实现向导功能》(点击打开链接)一样,新建三个对话框,设置成内接对话框,没有边框,通过类向导为这个三个对话框新建类函数,还是CPage1,2,3...,然后在成员变量的标签页里面,再为各个对话框的编辑框建立一个成员变量,在Class name中的一栏可以选择是哪个对话框里面的成员,以便我们能够操纵它们。不懂就翻翻我之前的文章,那篇文章已经说明得足够详细了,这里就不再赘述。

5、之后同样在主函数对话框中,为这个三个对话框建立成员变量CPage1,2,3 m_p1,2,3,分页的制作都这样,是Add Menber Variable,不是下图的Add Virtual Function,截图时候小手一抖,红包就被抢走了,但是这一次无需建立一个记录翻到第几页的整形变量了。

6、之后为标签页控件建立窗口消息处理函数,虽然这个专业名词好像非常高深的样子,但也就是告诉系统,如果用户切换标签的时候,你怎么做。其实以前在《【mfc】鼠标、键盘响应事件》(点击打开链接)也做过,只不过上次是为一个主对话框创建窗口消息处理函数,告诉系统,但这个对话框被左键点击也怎么做,这次是标签页有动作。

7、得到一个void CTabPagingDlg::OnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult) 函数,再里面写入如下分页算法,与《【mfc】利用单一对话框内的分页技术实现向导功能》(点击打开链接)里面的分页算法都一样,不说了,只是需要利用到int nSel=m_tab.GetCurSel();来取出现在用户是要切到哪个标签去。

void CTabPagingDlg::OnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult)
{
	// TODO: Add your control notification handler code here
	//取出当前用户是选择哪个标签的
	int nSel=m_tab.GetCurSel();
	CWnd* ps[] = {&m_p1,&m_p2,&m_p3};
	for(int i=0;i<sizeof(ps)/sizeof(ps[0]);i++)
		ps[i]->ShowWindow(i==nSel?SW_SHOW:SW_HIDE);
	*pResult = 0;
}

8、之后就是实现OnOK,哪个确定按钮的功能,也与上次的“确定”按钮功能一模一样,记得UpdateData()就行了,就是一个字都没有改,不说了,做完。

void CTabPagingDlg::OnOK()
{
	// TODO: Add extra validation here

	//CDialog::OnOK();
	CString cs;
	m_p1.UpdateData();
	m_p2.UpdateData();
	m_p3.UpdateData();
	cs+="第1页输入了:";
	cs+=m_p1.m_edit1;
	cs+="第2页输入了:";
	cs+=m_p2.m_edit1;
	cs+="第3页输入了:";
	cs+=m_p3.m_edit1;
	AfxMessageBox(cs);
}
时间: 2024-11-06 09:19:17

【mfc】标签页的相关文章

MFC标签页控件的使用

MFC标签页控件的使用 1.在对话框中添加一个标签页控件,并为此控件关联一个CTabCtrl类变量m_tabctrl. 2.创建若干个对话框资源作为标签页控件的标签. 修改两个属性: Border:    none   // 边界为空,这样它就没了标题栏 Style:      Child   // 这个模板就可以当作另一个窗口的子窗口了在对话框的初始化函数 3,在对话框的初始化函数OnInitDialog中, 添加初始化标签页控件的代码 3.1)  // 添加标签页,并设定标签名     m_

MFC MDI 主框架和标签页数据互操作

==================================声明================================== 本文原创,转载在正文中显要的注明作者和出处,并保证文章的完整性. 未经作者同意请勿修改(包括本声明),保留法律追究的权利. 未经作者同意请勿用于学术性引用. 未经作者同意请勿用于商业出版.商业印刷.商业引用. 本文不定期修正完善,为保证内容正确,建议移步原文处阅读. 本文链接:http://www.cnblogs.com/wlsandwho/p/43895

MFC属性页对话框

属性页对话框 分类 标签式和向导式 相关类 CPropertyPage-父类是CDialog类,称为属性页或页面对话框. CPropertySheet-父类是CWnd,称为属性表单. 一个完整的属性页对话框由一个属性表单+多个属性页组成.属性页嵌套在属性表单内. 标签式属性页的创建步骤: 1 插入属性页对话框资源,选中对话框资源ID修改语言为Chinese(P.R.C), 选中资源视图的右边的对话框右键选择属性设置为宋体,9号字体,双击资源,生成相应的类,注意父类选择CPropertyPage类

【ExtJs】tabPanel标签页与修改标签页的内容

标签页是一个很重要的插件,正如<[mfc]标签页>(点击打开链接)在VC6中的地位,通过ExtJs中能够在网页中轻松地实现一个与客户端一模一样的标签页. 一.基本目标 创建如下的标签页,在底部的工具栏有两个按钮,一个可以增加标签页,增加的标签的内容就是当前的时间.这里只作为例子,一般标签页里面的内容,是放个iframe,或者通过无参数传递的ajax直接从别的网页中取,避免在javascript写过多的html代码,别说别人,连你自己都不知道你在写什么了,这个问题在<[Servlet]在S

基于对话框的编程之标签页的使用

一.效果图 二.具体步骤 1.新建一个MFC应用程序,命名为07 CTabCtrl,应用程序类型选择基于对话框,资源语言选择简体中文,其他默认设置 2.在工具箱中选择标签页控件(Tab Control),拖拽至对话框中 3.对.rc文件右键打开文件所在文件夹 放入TabSheet.cpp文件和TabSheet.h文件 // TabSheet.cpp : implementation file // #include "stdafx.h" //#include "Propert

22.Android 十分方便的滑动标签页

22.Android 十分方便的滑动标签页 Android 十分方便的滑动标签页 前言 EasySlidingTabs属性 EasySlidingTabs布局 FragmentPagerAdapter EasySlidingTabs设置Tab背景 Github传送门 效果图 前言 其实滑动标签页是很常见的,网上搜也是一大堆.但是好用.简单.少bug.可扩展的库实在不多.很多想在做滑动标签页的时候也是经常想到各种不靠谱的库,虽然不难,但是容易坑自己. 原三星底层App大神JiangEcho提供技术

使用bootstrap响应式布局——手机屏幕中横向滚动显示标签页选项

导航栏到小屏幕的时候,我们的处理办法是隐藏为一个按钮.可是选项卡的标签页部分,我们的处理办法是加一个水平滚动条.但是加水平滚动条需要解决一个问题,就是宽度的问题,如果不设置宽度,他就会根据屏幕大小自适应,这样的话就会出现换行掉下去的情况,不会出现横向滚动条. 1.动态给ul设置宽度 遍历li元素求出所有的li的宽度和,这样就能动态给ul设置宽度. 2.给ul父盒子设置overflow-x:scroll;属性

web前端中实现多标签页切换的效果

在这里,实现多标签页效果的方法有两个,一个是基于DOM的,另一个是基于jquery的,此次我写的是一个对于一个电话套餐的不同,显示不同的标签页 方法一: 首先,我们要把页面的大体框架和样式写出来,html和css代码如下: <ul id="tab">    <li id="tab1" onclick="show(1)">10元套餐</li>    <li id="tab2" oncli

Bootstrap历练实例:标签页内的下拉菜单

<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>Bootstrap历练实例:标签页内的下拉菜单</title> <meta charset="utf-8" /> <meta name="vie