VC2010 使用TAB控件
2014-07-15 12:42
239 查看
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
plaincopy
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
plaincopy
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;
}
}
在对话框点击右键,选择class wizard...
2. 创建新的对话框,新对话框个数及ID根据设计需要进行修改
资源视图栏中,在Dialog文件夹右键
对新添的对话框属性进行设置:Border设为None,Style属性设为Child
在各对话框中添加所需控件后,为各对话框生成各自的对话框类:
右键点击需生成类的对话框
在弹出的对话框中: class name为自己取得类名如 CRegDlg; Base class选择CDialog;
点击finish
3. 在主对话框的头文件(PCRDlg.h)中包含新添加对话框的头文件(RegDlg.h)
继续在该主对话款类头文件中,为新添的对话框类创建两个成员变量
4. 在主对话框的初始化程序中添加如下代码:
[cpp] view
plaincopy
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
plaincopy
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控件使用
- 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控件的使用