TabControl的使用

 

TabControl的使用

(1)新建MFC-Dialog对话框工程;

(2)拖拽TabControl,新建变量m_tabCtl和其关联;

(3)新建两Dialog对话框,对话框属性设置为style=child,Border=None,关联类CDlg1,CDlg2;

(4)在主程序中,新建两对话框的成员变量,m_dlg1,m_dlg2;

(5)OnInitDialog()加入如下代码;

(6)添加ONSelchange的函数

OnInitDialog()函数

    // TODO: Add extra initialization here
    // 标签控件客户区的位置和大小
    CRect tabRect;
    // 插入标签页
    m_tabCtl.InsertItem(0, _T("第一个标签页"));
    m_tabCtl.InsertItem(1, _T("第二个标签页"));
    // 创建标签页
    m_dlg1.Create(IDD_DLG_1, &m_tabCtl);
    m_dlg2.Create(IDD_DLG_2, &m_tabCtl);

    // 获取标签客户区
    m_tabCtl.GetClientRect(&tabRect);
    // 调整标签客户区,使其大小适合放置标签页
    tabRect.left += 0;
    tabRect.top += 20;
    tabRect.right -= 0;
    tabRect.bottom -= 0;
    // 放置对话框1并设置为显示
    m_dlg1.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW);
    // 设置对话框2并设置为隐藏
    m_dlg2.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
  

TcnSelchange选择

void CToolIntegrationDlg::OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult)
{
    // TODO: Add your control notification handler code here
    *pResult = 0;
    CRect tabRect;    // 标签控件客户区的Rect   

    // 获取标签控件客户区Rect,并对其调整,以适合放置标签页   
    m_tabCtl.GetClientRect(&tabRect);
    tabRect.left += 0;
    tabRect.top += 20;
    tabRect.right -= 0;   
    tabRect.bottom -= 0;  

    // 显示隐藏控制
    switch ( m_tabCtl.GetCurSel() )
    {
    case 0:
        m_dlg1.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW);
        m_dlg2.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
        break;
    case 1:
        m_dlg1.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
        m_dlg2.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW);
        break;
    default:
        break;
    }
}
 

附说明:Style 的三个属性

1、

OVERLAPPED   -->   重叠窗口 

popup     --->   弹出式窗口 
child     -->   子窗口

2、

overlappedwindow,从窗口关系的角度,可独立存在。
child窗口,依附于parentwindow窗口,随parentwindow存在而存在,显示在parent内部
Popup窗口,弹出窗口,依附于parentwindow窗口,随parentwindow存在而存在, 相对于parentwindow位置可超过边界。

3、

WS_CHILD   Creates a child window. Cannot be used with the WS_POPUP style.
WS_POPUP   Creates a pop-up window. Cannot be used with the WS_CHILD style.
WS_OVERLAPPED   Creates an overlapped window. An overlapped window usually has a caption and a border.

注意:在创建非模态窗口时,把属性设置为overlapped
 

参考路径:https://blog.csdn.net/q357010621/article/details/52116752 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值