您的位置:首页 > 其它

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: