Tab控件--VC2010 使用TAB控件
2017-02-15 10:30
323 查看
文章转自:http://blog.csdn.net/phenixyf/article/details/26384369
1. 添加TAB控件并为其关联一个CTabCtrl类型的控件变量m_tab
在对话框点击右键,选择class wizard...
![](http://img.blog.csdn.net/20140520173104578?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcGhlbml4eWY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](http://img.blog.csdn.net/20140520173337765?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcGhlbml4eWY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
2. 创建新的对话框,新对话框个数及ID根据设计需要进行修改
资源视图栏中,在Dialog文件夹右键
![](http://img.blog.csdn.net/20140520173734687?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcGhlbml4eWY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
对新添的对话框属性进行设置:Border设为None,Style属性设为Child
![](http://img.blog.csdn.net/20140520174231046?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcGhlbml4eWY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
在各对话框中添加所需控件后,为各对话框生成各自的对话框类:
右键点击需生成类的对话框
![](http://img.blog.csdn.net/20140520174806984?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcGhlbml4eWY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
在弹出的对话框中: class name为自己取得类名如 CRegDlg; Base class选择CDialog;
点击finish
![](http://img.blog.csdn.net/20140520175104265?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcGhlbml4eWY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
3. 在主对话框的头文件(PCRDlg.h)中包含新添加对话框的头文件(RegDlg.h)
![](http://img.blog.csdn.net/20140520175543468?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcGhlbml4eWY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
继续在该主对话款类头文件中,为新添的对话框类创建两个成员变量
![](http://img.blog.csdn.net/20140520175850687?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcGhlbml4eWY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
4. 在主对话框的初始化程序中添加如下代码:
![](http://img.blog.csdn.net/20140520180101000?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcGhlbml4eWY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
[cpp] view
plain copy
![](https://code.csdn.net/assets/CODE_ico.png)
![](https://code.csdn.net/assets/ico_fork.svg)
CRect tabRect; // 标签控件客户区的位置和大小
m_tab.InsertItem(0, _T("Register")); // 插入第一个标签“Register”
m_tab.InsertItem(1, _T("Graphic")); // 插入第二个标签“Graphic”
m_RegDlg.Create(IDD_REGISTER_DLALOG, &m_tab); // 创建第一个标签页
m_GraDlg.Create(IDD_GRAPHIC_DIALOG, &m_tab); // 创建第二个标签页
m_tab.GetClientRect(&tabRect); // 获取标签控件客户区Rect
// 调整tabRect,使其覆盖范围适合放置标签页
tabRect.left += 1;
tabRect.right -= 1;
tabRect.top += 25;
tabRect.bottom -= 1;
// 根据调整好的tabRect放置m_jzmDlg子对话框,并设置为显示
m_RegDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW);
// 根据调整好的tabRect放置m_androidDlg子对话框,并设置为隐藏
m_GraDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
5. 为TAB控件的通知消息TCN_SELCHANGE添加处理函数:
在tab控件上点击右键
![](http://img.blog.csdn.net/20140520180956671?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcGhlbml4eWY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](http://img.blog.csdn.net/20140520181016843?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcGhlbml4eWY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
[cpp] view
plain copy
![](https://code.csdn.net/assets/CODE_ico.png)
![](https://code.csdn.net/assets/ico_fork.svg)
void CPCRDlg::OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: Add your control notification handler code here
*pResult = 0;
CRect tabRect; // 标签控件客户区的Rect
// 获取标签控件客户区Rect,并对其调整,以适合放置标签页
m_tab.GetClientRect(&tabRect);
tabRect.left += 1;
tabRect.right -= 1;
tabRect.top += 25;
tabRect.bottom -= 1;
switch (m_tab.GetCurSel())
{
// 如果标签控件当前选择标签为“register”,则显示m_regdlg对话框,隐藏m_gradlg对话框
case 0:
m_RegDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW);
m_GraDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
break;
// 如果标签控件当前选择标签为“graphic”,则隐藏m_regdlg对话框,显示m_gradlg对话框
case 1:
m_RegDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
m_GraDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW);
break;
default:
break;
}
}
1. 添加TAB控件并为其关联一个CTabCtrl类型的控件变量m_tab
在对话框点击右键,选择class wizard...
2. 创建新的对话框,新对话框个数及ID根据设计需要进行修改
资源视图栏中,在Dialog文件夹右键
对新添的对话框属性进行设置:Border设为None,Style属性设为Child
在各对话框中添加所需控件后,为各对话框生成各自的对话框类:
右键点击需生成类的对话框
在弹出的对话框中: class name为自己取得类名如 CRegDlg; Base class选择CDialog;
点击finish
3. 在主对话框的头文件(PCRDlg.h)中包含新添加对话框的头文件(RegDlg.h)
继续在该主对话款类头文件中,为新添的对话框类创建两个成员变量
4. 在主对话框的初始化程序中添加如下代码:
[cpp] view
plain copy
![](https://code.csdn.net/assets/CODE_ico.png)
CRect tabRect; // 标签控件客户区的位置和大小
m_tab.InsertItem(0, _T("Register")); // 插入第一个标签“Register”
m_tab.InsertItem(1, _T("Graphic")); // 插入第二个标签“Graphic”
m_RegDlg.Create(IDD_REGISTER_DLALOG, &m_tab); // 创建第一个标签页
m_GraDlg.Create(IDD_GRAPHIC_DIALOG, &m_tab); // 创建第二个标签页
m_tab.GetClientRect(&tabRect); // 获取标签控件客户区Rect
// 调整tabRect,使其覆盖范围适合放置标签页
tabRect.left += 1;
tabRect.right -= 1;
tabRect.top += 25;
tabRect.bottom -= 1;
// 根据调整好的tabRect放置m_jzmDlg子对话框,并设置为显示
m_RegDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW);
// 根据调整好的tabRect放置m_androidDlg子对话框,并设置为隐藏
m_GraDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
5. 为TAB控件的通知消息TCN_SELCHANGE添加处理函数:
在tab控件上点击右键
[cpp] view
plain copy
![](https://code.csdn.net/assets/CODE_ico.png)
void CPCRDlg::OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: Add your control notification handler code here
*pResult = 0;
CRect tabRect; // 标签控件客户区的Rect
// 获取标签控件客户区Rect,并对其调整,以适合放置标签页
m_tab.GetClientRect(&tabRect);
tabRect.left += 1;
tabRect.right -= 1;
tabRect.top += 25;
tabRect.bottom -= 1;
switch (m_tab.GetCurSel())
{
// 如果标签控件当前选择标签为“register”,则显示m_regdlg对话框,隐藏m_gradlg对话框
case 0:
m_RegDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW);
m_GraDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
break;
// 如果标签控件当前选择标签为“graphic”,则隐藏m_regdlg对话框,显示m_gradlg对话框
case 1:
m_RegDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
m_GraDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW);
break;
default:
break;
}
}
相关文章推荐
- VC2010 Tab控件使用
- VC2010 使用TAB控件
- VC++ Tab Control控件的详细使用(转)
- VC++ Tab Control控件的使用
- vc2010下使用64位控件
- VC 使用Tab Control 控件的例子
- VC++ Tab Control控件的使用
- [转]VC++ Tab Control控件的使用
- VC中TabControl控件使用方法(转载)
- VC++ Tab Control控件的使用
- VC++ Tab Control控件的使用
- VC++ Tab Control控件的详细使用
- VC++ Tab Control控件的详细使用(图)
- VC2005下tab控件的使用
- 在VC中使用TabCtrl(TAB控件)
- 在VC++中使用Tab Control控件
- VC之TAB控件使用
- VC2005下tab控件的使用
- VC中tab控件的使用
- VC++ Tab Control控件的使用