MFC标签控件练习

8 篇文章 0 订阅

创建的子对话框必须设置style属性为child

1.添加标签页

 CTabCtrl* ctbc = (CTabCtrl*)(GetDlgItem(IDC_TAB1));
 ctbc->InsertItem(0, TEXT("chinese"));
 ctbc->InsertItem(1, TEXT("english"));

2.创建对话框

 m_dialog1.Create(IDD_DIALOG1, ctbc);
 m_dialog2.Create(IDD_DIALOG2, ctbc);

3.获取标签控件客户区位置信息

 CRect rect;
 ctbc->GetClientRect(&rect);

 rect.left += 1;
 rect.right -= 1;
 rect.top += 21;
 rect.bottom -= 1;

4.设置对话框位置

 m_dialog1.SetWindowPos(NULL, rect.left, rect.top, rect.Width(), rect.Height(), SWP_SHOWWINDOW);
 m_dialog2.SetWindowPos(NULL, rect.left, rect.top, rect.Width(), rect.Height(), SWP_HIDEWINDOW);

5.消息映射

ON_NOTIFY(TCN_SELCHANGE, IDC_TAB1, &CMFCTrainDlg::OnTcnSelchangeTab1)

6.消息处理

当选择不同的标签页时,标签控件不会自动切换,需要自己编写对话框切换代码

void CMFCTrainDlg::OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult)
{
 // TODO: Add your control notification handler code here
 *pResult = 0;
 CTabCtrl* ctbc = (CTabCtrl*)(GetDlgItem(IDC_TAB1));

 CRect rect;
 ctbc->GetClientRect(&rect);

 rect.left += 1;
 rect.right -= 1;
 rect.top += 21;
 rect.bottom -= 1;

 switch (ctbc->GetCurSel())
 {
 case 0:
  m_dialog1.SetWindowPos(NULL, rect.left, rect.top, rect.Width(), rect.Height(), SWP_SHOWWINDOW);
  m_dialog2.SetWindowPos(NULL, rect.left, rect.top, rect.Width(), rect.Height(), SWP_HIDEWINDOW);
  break;
 case 1:
  m_dialog1.SetWindowPos(NULL, rect.left, rect.top, rect.Width(), rect.Height(), SWP_HIDEWINDOW);
  m_dialog2.SetWindowPos(NULL, rect.left, rect.top, rect.Width(), rect.Height(), SWP_SHOWWINDOW);
  break;
 default:
  break;
 }
 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值