ctabctrl

CTabCtrl

 

 

 

  

 

 

 

 

如上图所示,下面我们来逐步实现:

 

 

首先我们要准备三张图标,载入工程:

IDI_ICON1IDI_ICON2IDI_ICO3

 

view类增加变量:

CTabCtrl m_TabCtrl;

CImageList m_ImageList;

 

OnInitialUpdate(或者OnCreate消息里处理:

 

m_TabCtrl.Create(WS_CHILD|WS_VISIBLE|TCS_MULTILINE|TCS_TOOLTIPS|TCS_FIXEDWIDTH,CRect(10,10,400,400),this,1);

 

       m_TabCtrl.SetExtendedStyle(TCS_EX_FLATSEPARATORS|TCS_EX_REGISTERDROP);

 

 

 

 

       m_ImageList.Create(16,16,ILC_COLOR32|ILC_MASK,0,0);

       m_TabCtrl.SetImageList(&m_ImageList);

 

 

       for(inti=0;i<3;i++)

              m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON2+i));

        

 

      

       m_TabCtrl.InsertItem(TCIF_TEXT|TCIF_IMAGE,0,"item 1",0,0);

 

       m_TabCtrl.InsertItem(TCIF_TEXT|TCIF_IMAGE,1,"item 2",1,1);

 

       m_TabCtrl.InsertItem(TCIF_TEXT|TCIF_IMAGE,2,"item 3",2,2);

 

        

 

       m_TabCtrl.HighlightItem(0,TRUE);

 

 

       CRectrect0;

       m_TabCtrl.GetItemRect(0,&rect0);

       m_OnItem1btn.Create("btn 1",WS_BORDER|WS_CHILD|WS_VISIBLE,CRect(rect0.left+20,rect0.top+50,rect0.left+120,rect0.top+100),this,101);

 

 

       CRectrect1;

       m_TabCtrl.GetItemRect(1,&rect1);

       m_OnItem2btn.Create("btn 2",WS_BORDER|WS_CHILD,CRect(rect1.left,rect1.top+100,rect1.left+100,rect1.top+150),this,102);

 

 

       CRectrect2;

       m_TabCtrl.GetItemRect(2,&rect2);

       m_OnItem3btn.Create("btn 3",WS_BORDER|WS_CHILD,CRect(rect2.left,rect2.top+100,rect2.left+100,rect2.top+150),this,103);

 

 

处理用户点击选择消息:

 

添加消息:

afx_msg voidOnNotifyClicked(NMHDR*pNotifyStruct,LRESULT*result);

 

 

添加映射:

 

ON_NOTIFY(NM_CLICK,1,OnNotifyClicked)

 

消息处理:

 

void CTabTestView::OnNotifyClicked(NMHDR*pNMHDR,LRESULT*pResult)

{

        

       intitem;

       item=m_TabCtrl.GetCurFocus();

       intcount;

       count=m_TabCtrl.GetItemCount();

 

       for(inti=0;i<count;i++)

       {

              if(i==item)

              {

                     m_TabCtrl.HighlightItem(i,TRUE);

              }

              else

              {

                     m_TabCtrl.HighlightItem(i,FALSE);

              }

       }

      

 

       switch(item)

       {

       case0:

              {

                     m_OnItem1btn.ShowWindow(SW_SHOW);

                     m_OnItem2btn.ShowWindow(SW_HIDE);

                     m_OnItem3btn.ShowWindow(SW_HIDE);

                     break;

              }

       case1:

              {

                     m_OnItem1btn.ShowWindow(SW_HIDE);

                     m_OnItem2btn.ShowWindow(SW_SHOW);

                     m_OnItem3btn.ShowWindow(SW_HIDE);

                     break;

              }

       case2:

              {

                     m_OnItem1btn.ShowWindow(SW_HIDE);

                     m_OnItem2btn.ShowWindow(SW_HIDE);

                     m_OnItem3btn.ShowWindow(SW_SHOW);

                     break;

              }

       default:

              break;

       }

      

        

}

 

 

一切搞定,记住再给按钮添加消息响应函数时要指定父窗口为view窗口(this,除非你的Tab是自己新建的派生类,然后在派生类响应消息响应时可以的,即指定按钮的父窗口为tab窗口。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值