西安SEO网站建设哪家好/博客
原文地址:http://blog.csdn.net/franzhong/article/details/6304968
http://snowcoal.com/article/446.html
这个Tab控件确实封装的太不敢恭维,要写一堆代码才是实现一个简单的tab样式,此版文章只为最初级的入门级菜鸟,鉴于网上好多代码都是easy said than done。
个人总结出来三点,抛开所有东西,说到底实现tab控件总共分三步:(界面,初始化,控制)
环境关键词: VC6.0 MFC 对话框
一:拼凑界面:
新建好对话框工程后把上面的确定啦之类的点中Delete掉
添加Tab 把这个Tab的ID改为IDC_TAB 右健ClassWized(类向导)里在变量那里为IDC_TAB添加一个变量(从CTabCtrl)
在资源里新建对话框属性改一下:样式是下层,边框是无(看好啊)(当前的对话框的ID为IDD_DIALOG1)
在上面再加个字吧(静态变量)例如第一页(别放在最顶上,怕把后面小标题挡住了,字放中间吧)
直接拖这个对话框IDD_DIALOG1复制一份(你一拖就看到了小加号松手就行)这个名字自动是IDD_DIALOG2
把里面的静态量改了例如第二页。
第一步完成了,下面我们来初始化
二:初始化参数:
在主对话框类里右键添加变量,CDlgPar1 m_para1;CDlgPar2 m_para2;这是你刚生成的两个对话框类,这里实例一下呆会用//这不会得可以查一下如何添变量的
的OnInitDialog中加入如下代码:
1 2 | m_tab.InsertItem(0, "num1" ); m_tab.InsertItem(1, "num2" ); |
还记得m_tab是什么不,就是刚添的tab控件,我们给它插入元素啦,当然你也可以多加几项
现在就你可以测试一下了,小样子是不是出来了,就是没有定义的两个对话框的内容
接着添加:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | //把第一个对话框IDD_DIALOG1给映射到那个TAB上去,鬼知道做了什么事 m_para1.Create(IDD_DIALOG1,GetDlgItem(IDC_TAB)); m_para2.Create(IDD_DIALOG2,GetDlgItem(IDC_TAB)); CRect rs; //这要个矩行区域了,因为你要是IDD_DIALOG1太大太小太长太短,放里面也不合适啊 m_tab.GetClientRect(&rs); rs.top += 10; //你的tab用于点击的小图标在上面的时候把这个就加大点50吧,我是在放在下面的 rs.bottom -=50; //这里的数字你改改看,小心别挡着东西就行 rs.left +=10; rs.right -=10; m_para1.MoveWindow(&rs); m_para2.MoveWindow(&rs); //到这儿两个对话框框口都移过来了,就先默认的显示一个吧 m_para1.ShowWindow(TRUE); //就是你了 m_para2.ShowWindow(FALSE); m_tab.SetCurSel(0); //因为以上是在OnInitDialog中所以运行时,对话框会被以上代码初始化一次 |
第二步结束,你可以运行看一下了,没有数据的话,你看看是不是丢了哪一步,有数据了就下一步
三:设置控制逻辑
还是右键那个Tab进入类查看,在message maps里object ID有你刚定义的IDC_TAB,往右边看里面是不是有个小名叫TCN_SELCHANGE的添加它后点edit
加入如下代码,加代码后是这样的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | void CTestTabDlg::OnSelchangeTab(NMHDR* pNMHDR, LRESULT * pResult) { // TODO: Add your control notification handler code here int Cursel = m_tab.GetCurSel(); switch (Cursel) { case 0: //这里的0,1你刚在OnInitDialog中设定 m_para1.ShowWindow(TRUE); m_para2.ShowWindow(FALSE); break ; case 1: m_para1.ShowWindow(FALSE); // m_para2.ShowWindow(TRUE); break ; default : break ; } *pResult = 0; } |
三步完成,总结一下,这些事确实多,但是我想省掉些东西的时候发现还就不正常了,慢慢了解吧,先知道怎么用就行