VC++之Tab控件

翻译|其它|编辑:郝浩|2007-09-21 09:42:13.000|阅读 1562 次

概述:

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

      Tab  属性页控件可以在一个窗口中添加不同的页面,然后在页选择发生改变时得到通知。MFC  中使用CTabCtrl  类来封装属性页控件的各种操作。通过调用  BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );创建一个窗口,dwStyle  中可以使用以下一些属性页控件的专用风格:


     TCS_BUTTONS  
使用按钮来表示页选择位置 
    TCS_MULTILINE  
分行显示页选择位置 
    TCS_SINGLELINE  
只使用一行显示页选择位置


  在控件创建后必需向其中添加页面才可以使用,添加页面的函数为:
  BOOL InsertItem( int nItem, LPCTSTR lpszItem );nItem  为位置,从零开始,lpszItem  为页选择位置上显示的文字。如果你希望在页选择位置处显示一个图标,你可以调用  BOOL InsertItem( int nItem, LPCTSTR lpszItem, int nImage );nImage  指明所使用的图片位置。(在此之前必须调用  CImageList * SetImageList( CImageList * pImageList );设置正确的  ImageList
  
  此外  CTabCtrl  还提供了一些函数用于得到/修改控件的状态。
  int GetCurSel( )/int SetCurSel( int nItem );用于得到/设置当前被选中的页位置。
  BOOL DeleteItem( int nItem )/BOOL DeleteAllItems( );用于删除指定/所有页面。
  void RemoveImage( int nImage );用于删除某页选择位置上的图标。
  
  属性页控件的消息映射同样使用  ON_NOTIFY  宏,形式如同:ON_NOTIFY( wNotifyCode, id, memberFxn )wNotifyCode  为通知代码,id  为产生该消息的窗口  IDmemberFxn  为处理函数,函数的原型如同  void OnXXXTab(NMHDR* pNMHDR, LRESULT* pResult),其中  pNMHDR  为一数据结构,在具体使用时需要转换成其他类型的结构。对于列表控件可能取值和对应的数据结构为:
  
  TCN_SELCHANGE  在当前页改变后发送,所用结构:NMHDR
  TCN_SELCHANGING  在当前页改变时发送可以通过返回  TRUE  来禁止页面的改变,所用结构:NMHDR
  
  一般来讲在当前页发生改变时需要隐藏当前的一些子窗口,并显示其它的子窗口。下面的伪代码演示了如何使用属性页控件:
  
  CParentWnd::OnCreate(...)
  {
   m_tab.Create(...);
   m_tab.InsertItem(0,"Option 1");
   m_tab.InsertItem(1,"Option 2");
   Create a edit box as the m_tab's Child
   Create a static box as the m_tab's Child
   edit_box.ShowWindow(SW_SHOW); // edit box  在属性页的第一页
   static_box.ShowWindow(SW_HIDE); // static box  在属性页的第二页
  }
  void CParentWnd::OnSelectChangeTab(NMHDR* pNMHDR, LRESULT* pResult)
  {//处理页选择改变后的消息
   if(m_tab.GetCurSel()==0)
   {//根据当前页显示/隐藏不同的子窗口
   edit_box.ShowWindow(SW_SHOW);
   static_box.ShowWindow(SW_HIDE);
   }
   else
   {//
   edit_box.ShowWindow(SW_HIDE);
   static_box.ShowWindow(SW_SHOW);
   }
  


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:csdn

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP