VC++之Tab控件

转载 2007年09月20日 11:32:00
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为产生该消息的窗口ID,memberFxn为处理函数,函数的原型如同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);

   }

  } 
 

VC++ TAB控件使用

VC++ Tab Control控件的使用 1. 新建一个MFC工程, 取名MyTab, 选择Dialog based, 然后Finish. 2. 删除对话框上默认添加的三个控件. 添加Tab C...
  • w285868925
  • w285868925
  • 2013年01月17日 15:51
  • 249

在VC++中使用Tab Control控件

对于直接使用 CTabCtrl 在对话框内 1.          在对话框编辑区内,添加一个 Tab Control 控件到资源模板里面,设置它的控制 ID 2.          使用添加成员...
  • xiaoxinyu316
  • xiaoxinyu316
  • 2014年03月06日 21:45
  • 521

MFC完全自绘Tab控件,支持图片背景

1.建立CWnd的派生类CNewTab: CArray m_arrImg; //保存Tab控件每一项的背景图片 CArray m_arrDlgID; //保存没一项对应的对话框ID CArray m_...
  • llive88
  • llive88
  • 2015年06月11日 16:21
  • 1070

MFC入门学习之控件(3)标签控件Tab Control的添加和使用

向对话框中拖入一个tab control控件,调整好大小以适合要求 对于控件类,我们需要定义一个控件类的对象,通过对象的成员方法来将需要添加的内容显示在对话框中,并通过一定的逻辑来控制标签项的显示...
  • codectq
  • codectq
  • 2014年02月12日 21:23
  • 6052

MFC中tab control控件的使用方法

一、新建一个MFC工程, 取名Tabctrl, 选择基于对话框, 然后点完成。   二、删除对话框上默认添加的三个控件,添加Tab Control控件,属性设置:ID:IDC_TAB1    ...
  • xinm1001
  • xinm1001
  • 2016年10月06日 20:33
  • 1017

VC控件随窗口最大化而变大或缩小

1.本对话框实现所有控件随窗口最大化或恢复原状:
  • lsyyoyo
  • lsyyoyo
  • 2014年11月16日 23:49
  • 1731

MFC之Tab Control控件简单使用

在MFC当中使用Tab Control控件切换不同的界面,使用起来会复杂一些,至少是比Qt中的Tab Widget复杂得多。我接下来会以一个MFC对话框应用程序为例子,说明Tab Control控件的...
  • u010780613
  • u010780613
  • 2016年12月26日 10:15
  • 2516

例说WIN32 Tab控件使用

今天查找了一天关于SDK下,TAB控件的使用,到处都是C++的,本人还没开始学习C++,所以只能学习SDK方式使用TAB控件,搞了一天终于搞定了 ,现在在这里记录下,以便后来人有需要。 先直接上效果图...
  • liuyunjay66
  • liuyunjay66
  • 2013年07月14日 19:19
  • 2905

谈一谈属性页和Tab控件

最近给新带的一个小师弟布置了一个小作业:很简单就是有三个Tab页面,每个Tab页面有1个编辑框,在第一个和第二个编辑框界面各输入一个数字,在切换第三个Tab时编辑框内显示前两个Tab页的编辑框输入数字...
  • wenzhou1219
  • wenzhou1219
  • 2014年01月07日 13:27
  • 5734

VS2010对话框:设置对话框控件的Tab顺序

我们先来直观的看看各个控件的Tab顺序吧。打开“Resource View”视图,然后在资源中找到对话框IDD_ADDITION_DIALOG,双击ID后中间客户区域出现其模板视图。在主菜单中选择“F...
  • liyun123gx
  • liyun123gx
  • 2014年03月12日 09:52
  • 1369
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VC++之Tab控件
举报原因:
原因补充:

(最多只允许输入30个字)