mfc中使用Tab Control控件
2015-11-12 23:39
543 查看
转自:
http://blog.163.com/gz_ricky/blog/static/1820491182011061180897/
首先我们新建一个MFC程序, 就简简单单搞个Dialog吧~
然后在”资源”找到Tab Control控件, 将他拖进来~
虽然面板显示了这个控件, 但它完全不会起作用, 因为在代码层次来讲它完全未实现, 只是在资源文件中有所体现
之后选择主Dialog, 右键选择添加变量,
MFC会根据控件在实现类里边添加关于Tab Control的变量, 当然喇你也可以自己在代码处添加.
public:
CTabCtrl m_tab;
然后我们再创建两个对话框, 将它们放在Tab Page里边一一对应, 要记得讲对话框的属性设置为style-child和border-none.
在主对话框的头文件里加上新创建的两个对话框类的头文件和变量.
#include "TabPage1.h"
#include "TabPage2.h"
public:
CTabCtrl m_tab;
CTabPage1 m_page1;
CTabPage2 m_page2;
OnInitDialog要添加部分代码.
// TODO: 在此添加额外的初始化代码
//==========================================================
//初始化TAB
TCITEM tc1,tc2;
tc1.mask = TCIF_TEXT;
tc1.pszText = _T("第一页");
tc2.mask = TCIF_TEXT;
tc2.pszText = _T("第二页");
m_tab.InsertItem(0, &tc1);
m_tab.InsertItem(1, &tc2); //到这里只是添加了两个tab页
CRect rec;
m_tab.GetClientRect(&rec);//获得TAB控件的坐标
//定位选项卡页的位置,这里可以根据情况自己调节偏移量
rec.bottom -= 2;
rec.left += 1;
rec.top += 27;
rec.right -= 3;
//创建子页面
// m_page1.Create(IDD_DIALOG1,GetDlgItem(IDC_TAB));
// m_page2.Create(IDD_DIALOG2,GetDlgItem(IDC_TAB));
m_page1.Create(IDD_DIALOG1,&m_tab);
m_page2.Create(IDD_DIALOG2,&m_tab);
//将子页面移动到指定的位置
m_page1.MoveWindow(&rec);
m_page2.MoveWindow(&rec);
//显示子页面
m_page1.ShowWindow(SW_SHOW);
m_page2.ShowWindow(SW_HIDE);
m_tab.SetCrusel(0)//初始化显示哪个子页面,0是第一个,1是第二个
//===============================================================
还有帮Tab Control设置事件.
// TODO: 在此添加控件通知处理程序代码
switch(m_tab.GetCurSel())
{
case 0:
m_page1.ShowWindow(SW_SHOW);
m_page2.ShowWindow(SW_HIDE);
break;
case 1:
m_page1.ShowWindow(SW_HIDE);
m_page2.ShowWindow(SW_SHOW);
break;
default:
break;
}
然后就可以用了..
更多信息可以参考http://apps.hi.baidu.com/share/detail/12680680
NOTE:要注意!! CPage本身就是一个Dialog, 即这里用TabControl控制的子页面是Dialog类型, 而不是什么Wnd什么View那些 奇怪的东西~ 可能可以通过m_page1.Create(IDD_DIALOG1,GetDlgItem(IDC_TAB1));绑定其他类型.. 曾经在CPage里边又加CDialog
转自:
http://blog.163.com/gz_ricky/blog/static/1820491182011061180897/
首先我们新建一个MFC程序, 就简简单单搞个Dialog吧~
然后在”资源”找到Tab Control控件, 将他拖进来~
虽然面板显示了这个控件, 但它完全不会起作用, 因为在代码层次来讲它完全未实现, 只是在资源文件中有所体现
之后选择主Dialog, 右键选择添加变量,
MFC会根据控件在实现类里边添加关于Tab Control的变量, 当然喇你也可以自己在代码处添加.
public:
CTabCtrl m_tab;
然后我们再创建两个对话框, 将它们放在Tab Page里边一一对应, 要记得讲对话框的属性设置为style-child和border-none.
在主对话框的头文件里加上新创建的两个对话框类的头文件和变量.
#include "TabPage1.h"
#include "TabPage2.h"
public:
CTabCtrl m_tab;
CTabPage1 m_page1;
CTabPage2 m_page2;
OnInitDialog要添加部分代码.
// TODO: 在此添加额外的初始化代码
//==========================================================
//初始化TAB
TCITEM tc1,tc2;
tc1.mask = TCIF_TEXT;
tc1.pszText = _T("第一页");
tc2.mask = TCIF_TEXT;
tc2.pszText = _T("第二页");
m_tab.InsertItem(0, &tc1);
m_tab.InsertItem(1, &tc2); //到这里只是添加了两个tab页
CRect rec;
m_tab.GetClientRect(&rec);//获得TAB控件的坐标
//定位选项卡页的位置,这里可以根据情况自己调节偏移量
rec.bottom -= 2;
rec.left += 1;
rec.top += 27;
rec.right -= 3;
//创建子页面
// m_page1.Create(IDD_DIALOG1,GetDlgItem(IDC_TAB));
// m_page2.Create(IDD_DIALOG2,GetDlgItem(IDC_TAB));
m_page1.Create(IDD_DIALOG1,&m_tab);
m_page2.Create(IDD_DIALOG2,&m_tab);
//将子页面移动到指定的位置
m_page1.MoveWindow(&rec);
m_page2.MoveWindow(&rec);
//显示子页面
m_page1.ShowWindow(SW_SHOW);
m_page2.ShowWindow(SW_HIDE);
m_tab.SetCrusel(0)//初始化显示哪个子页面,0是第一个,1是第二个
//===============================================================
还有帮Tab Control设置事件.
// TODO: 在此添加控件通知处理程序代码
switch(m_tab.GetCurSel())
{
case 0:
m_page1.ShowWindow(SW_SHOW);
m_page2.ShowWindow(SW_HIDE);
break;
case 1:
m_page1.ShowWindow(SW_HIDE);
m_page2.ShowWindow(SW_SHOW);
break;
default:
break;
}
然后就可以用了..
更多信息可以参考http://apps.hi.baidu.com/share/detail/12680680
NOTE:要注意!! CPage本身就是一个Dialog, 即这里用TabControl控制的子页面是Dialog类型, 而不是什么Wnd什么View那些 奇怪的东西~ 可能可以通过m_page1.Create(IDD_DIALOG1,GetDlgItem(IDC_TAB1));绑定其他类型.. 曾经在CPage里边又加CDialog
相关文章推荐
- ios NSMutableArray
- Docx4j 简单操作文字图片(包含页眉页脚和主体内容)
- 特征选择(四)-分散度
- CUDA内存拷贝
- C项目开发—通讯录(三) 删除、修改、搜索功能、源码发放
- 特征选择(三)-K-L变换
- windows装系统磁盘不能格式化的解决方法
- iOS/OS X内存管理(一):基本概念与原理
- CentOS_5x防火墙模板
- 特征选择(二)-聚类变换
- 循环比赛日程表(match)
- poj 2601 公式推导
- C++中子类继承父类构造器和析构器的执行顺序
- 旭说数据结构之栈的小题目
- 特征选择(一)-维数问题与类内距离
- java线程池学习
- C#学习笔记 特性
- 虚函数、纯虚函数、普通函数的区别
- 黑白棋子的移动
- 我的iOS学习历程 - 自定义视图