码迷,mamicode.com
首页 > 编程语言 > 详细

【mfc】标签页

时间:2015-02-13 14:51:27      阅读:1305      评论:0      收藏:0      [点我收藏+]

标签:标签页   分页   mfc   vc6   c++   

这个东西不必介绍了,现在在一个对话框中,还有几个没有标签页呢?不过尽管是很常见的东西,它的现实并不简单,它不是像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);
}


【mfc】标签页

标签:标签页   分页   mfc   vc6   c++   

原文地址:http://blog.csdn.net/yongh701/article/details/43793427

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!