VC MFC标签(CTabCtrl)控件

本文介绍了如何在Windows应用程序中使用标签控件管理对话框,包括添加树视图和列表视图控件,以及设置TCN_SELCHANGE消息处理函数以实现标签切换时控件的显示与隐藏。
摘要由CSDN通过智能技术生成

标签控件简单应用

首先往对话框添加标签控件,调整至合适大小,关联变量m_TabCtrl,再添加两个控件,用于标签项显示,分别是列表视图控件,关联变量m_ListCtrl,树视图控件,关联变量m_TreeCtrl.

这里的树视图,列表视图控件可自行设计,这里我就仅简单的设计一下,对话框初始化函数添加的代码如下:

 HTREEITEM hFriends=m_TreeCtrl.InsertItem("朋友");//根结点
    m_TreeCtrl.InsertItem("家人");
    m_TreeCtrl.InsertItem("小明",hFriends);
    m_TreeCtrl.InsertItem("小华",hFriends);
    for(int i=0;i<7;i++)
 {
  CString str;
  str.Format("小明%d",i);
  m_ListCtrl.InsertItem(0,str,0);
 }
   m_TabCtrl.InsertItem(0,"ListCtrl");//添加标签项
   m_TabCtrl.InsertItem(1,"TreeCtrl");
   m_TreeCtrl.SetParent(&m_TabCtrl);//设置标签控件为父窗口
   m_ListCtrl.SetParent(&m_TabCtrl);
   m_TabCtrl.SetCurSel(0);//设置选中标签
   CRect rect;
   m_TabCtrl.GetClientRect(rect);//获取标签控件客户区大小
   CRect itemRect;
   m_TabCtrl.GetItemRect(0,itemRect);//获得一个区域的大小
   rect.DeflateRect(0,itemRect.Height()+4,0,0);//调整控件显示大小
   m_TreeCtrl.MoveWindow(rect);//移动控件位置,调整控件大小
   m_ListCtrl.MoveWindow(rect);
   m_TreeCtrl.ShowWindow(SW_HIDE);

然后给标签控件添加TCN_SELCHANGE(项选择改变时)消息处理函数,函数代码如下:

void CFifthDlg::OnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult)
{
 // TODO: Add your control notification handler code here
 int Sel=m_TabCtrl.GetCurSel();//获取选择项
 if(Sel==0)
 {
  m_ListCtrl.ShowWindow(SW_SHOW);
  m_TreeCtrl.ShowWindow(SW_HIDE);//隐藏树视图控件
 }
    else
 {
  m_TreeCtrl.ShowWindow(SW_SHOW);
  m_ListCtrl.ShowWindow(SW_HIDE);//隐藏列表视图控件
 }

 *pResult = 0;
}

运行一下吧!

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
/* 使用方法: 添加对话框资源,并且各个子对话框资源的属性应设置为:Style为Child,Border为None。 为这些对话框建立类(直接从CDialog继承)如CPage1、CPage2…… 在主对话框的类中添加成员变量:CPage1 m_Page1;、CPage2 m_Page2;…… 在主对话框资源中,加入一个Tab Control,并且适当调整位置和大小。利用ClassWizard来为这个Tab Control创建 一个CTabSheet的控件变量m_TabSheet。 在主对话框的OnInitDialog()加入: m_TabSheet.AddPage("tab1", &m_page1, IDD_DIALOG1); m_TabSheet.AddPage("tab2", &m_page2, IDD_DIALOG2); …… 如果要给标签加上图标,在AddPage之前设置好ImageList: //为TabCtrl控件添加图标 m_imageList.Create(16, 16, ILC_COLOR32, 1, 1); CBitmap bitmap1,bitmap2; bitmap1.LoadBitmap(IDB_BITMAP1); bitmap2.LoadBitmap(IDB_BITMAP2); m_imageList.Add(&bitmap1, RGB(0,0,0)); m_imageList.Add(&bitmap2, RGB(0,0,0)); m_TabSheet.SetImageList(&m_imageList); //给TabCtrl添加页 m_TabSheet.AddPage(_T("Page1"), &m_Page1, m_Page1.IDD, 0); m_TabSheet.AddPage(_T("第二页"), &m_Page2, m_Page2.IDD, 1); 很不可思议的是,我在测试中,如果在工程中没有把TabCtrl的标签设置成左边或右边的话, 那么在运行时修改标签的位置为左边或右边时会出现问题,但是只要曾经设置过TabCtrl的标签为左边或右边后, 以后运行不管工程中的TabCtrl的标签是怎样设置的,在运行时都可以正确的修改其标签的位置。 */
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bczheng1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值