Tab CtrTab属性页控件可以在一个窗口中添加不同的页面,然后在页选择发生改变时得到通知。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);
}
}
分享到:
相关推荐
本文将详细探讨"自绘TabCtrl类"这一主题,这是MFC中一个重要的用户界面元素,用于实现自定义样式的选项卡控件。 TabCtrl是Windows API中的一个控件,通常用于在多个页面间切换,每个页面可以承载不同的信息或功能。...
在本文中,我们将深入探讨如何在Visual Studio 2010中使用MFC(Microsoft Foundation Classes)库,特别是关于TabCtrl控件的重载,以便实现加载BMP图像以美化标签的功能。MFC是Microsoft为C++开发Windows应用程序...
首先,重载TabCtrl控件意味着我们需要创建一个新的类,继承自MFC的CWnd或CTabCtrl类。在这个新类中,我们将覆盖默认的行为,添加自定义的功能。重载的过程通常包括以下几个步骤: 1. **创建自定义控件类**:创建一...
本项目中,我们关注的是MFC的TabCtrl控件,它在GUI设计中扮演着重要角色,用于实现类似网页浏览器中的标签式界面切换效果。通过使用TabCtrl控件,开发者可以创建多面板的用户界面,允许用户在不同的功能区域之间轻松...
在Microsoft Foundation Classes (MFC)库中,TabCtrl是一个非常常用且实用的控件,它允许用户通过标签页的形式组织和切换不同的视图或信息。XP风格的TabCtrl是在Windows XP系统中引入的一种视觉样式,提供了更为现代...
MFCTabCtrl是Microsoft Foundation Class (MFC) 库中提供的一个控件,它用于创建类似于Windows资源管理器那样的多标签界面。在开发基于MFC的应用程序时,开发者经常使用MFCTabCtrl来提供用户友好的多视图界面。然而...
本篇将深入探讨如何使用MFC中的`CTabCtrl`控件。 ### 1. CTabCtrl类简介 `CTabCtrl`类是MFC对Windows API中的`TabCtrl`控件的封装,它提供了添加、删除和操作选项卡的方法。通过继承`CTabCtrl`,开发者可以轻松地...
本篇文章将深入探讨如何在MFC应用程序中实现TabCtrl,并涵盖相关的核心知识点。 首先,我们需要了解TabCtrl的基本概念。TabCtrl在Windows API中被定义为CTabCtrl类,它提供了类似书签的功能,用户可以点击不同的...
在MFC(Microsoft Foundation Classes)框架中,TabCtrl控件是一种常见的用户界面元素,用于创建具有多个选项卡的界面,每个选项卡代表一个独立的视图或功能区域。默认情况下,MFC TabCtrl控件的标签是纯文本的,但...
MFC中的CTabCtrl控件提供了丰富的消息映射和事件处理,如`ON_NOTIFY(TCN_SELCHANGE, IDC_TABCTRL, OnSelChange)`,当用户切换标签时,`OnSelChange()`函数会被调用,可以在这里更新对应视图的内容。 **五、实战技巧...
在Microsoft Foundation Class (MFC)库中,Tab控件是一种常用元素,用于在单一界面内组织多个视图或对话框。在默认情况下,MFC的Tab控件可能看起来较为普通,但通过自定义绘制(OwnerDraw)技术,我们可以实现对Tab...
以上步骤完成后,你的MFC Tab控件不仅会有漂亮的图片,而且当用户选择不同的Tab页时,标题颜色也会随之变化。请注意,这只是一个基本的示例,实际应用中可能需要根据需求进行更复杂的定制,如动画效果、多态性或...
在VC2010中,`CTabCtrl`是MFC提供的一个类,它封装了Windows API中的`TabCtrl`控件。这个控件允许开发者创建类似书签的界面,每个“页”都可以包含不同的内容或者功能。通过`CTabCtrl`类,我们可以添加、删除、...
在MFC(Microsoft Foundation Classes)框架中,标准的CTabCtrl控件通常显示为横向排列的选项卡,但有时开发者可能需要实现自定义布局,比如竖直排列的选项卡。本教程将详细介绍如何利用MFC自绘控件来实现竖排的TAB ...
本篇文章将深入探讨`TabCtrl`控件的使用方法,这对于MFC对话框控件初学者来说是一份宝贵的学习资源。 1. **CTabCtrl简介** `CTabCtrl`是MFC对Windows API中的`TabControl`控件的封装,它允许用户在多个页面之间...
此外,对于复杂的界面设计,可能还需要结合使用其他MFC控件和自定义控件来实现更丰富的功能和视觉效果。 总之,通过自定义绘制,MFC中的TabControl控件可以被美化得既具有个性又美观,提高应用的吸引力。这个过程...
本篇文章将详细探讨MFC Tab控件的使用,包括其基本概念、创建步骤、功能实现以及常见问题的解决。 1. **MFC Tab控件的基本概念** MFC Tab控件是基于Windows API中的TCN_SELCHANGE消息,通过CTabCtrl类来实现的。它...