{A}{S0}简介{BR这种控制是CWnd类的基础上,可放置一个子窗口的任何地方,例如在客户区的框架或对话框。标签可以将子窗口的顶部或底部。用户可以使用鼠标拖动制表符。控制变焦(标签萎缩)和滚动标签模式。此外,如果有一个选项卡的标签领域都可以隐藏。使用代码
子窗口中添加使用的HWND,他们可以是任何类型,例如无模式对话框。 TabCtrl包括三个方面:控制区,标签区,窗户面积。
以创建控制和添加元素,你可以做下面的步骤: TabCtrlEx<tabctrlstyle_vs2003_client /> m_TabCtrl;
CListCtrl m_List1, m_List2, m_List3;
...
...
// Creation and initialization of TabCtrl.
if(m_TabCtrl.Create(this,WS_CHILD | WS_VISIBLE,
CRect(0,0,0,0),100/*id of TabCtrl*/)==false) return -1;
m_TabCtrl.SetBehavior(TAB_BEHAVIOR_SCROLL);
CImageList imagelist, imagelistSys;
CBitmap bmp, bmpSys;
imagelist.Create(16,16,ILC_COLOR24 | ILC_MASK,3,0);
bmp.LoadBitmap(IDB_BITMAP1);
imagelist.Add(&bmp,RGB(255,0,255));
imagelistSys.Create(14,14,ILC_COLOR24 | ILC_MASK,7,0);
bmpSys.LoadBitmap(IDB_BITMAP2);
imagelistSys.Add(&bmpSys,RGB(255,0,255));
m_TabCtrl.SetImageLists(&imagelist,NULL);
m_TabCtrl.SetSystemImageList(&imagelistSys);
// Creation of child windows.
if(m_List1.Create(WS_CHILD | WS_CLIPCHILDREN | LVS_SHOWSELALWAYS |
LVS_REPORT,CRect(0,0,0,0),&m_TabCtrl,2001)==0 ||
m_List2.Create(WS_CHILD | WS_CLIPCHILDREN | LVS_SHOWSELALWAYS |
LVS_REPORT,CRect(0,0,0,0),&m_TabCtrl,2002)==0 ||
m_List3.Create(WS_CHILD | WS_CLIPCHILDREN | LVS_SHOWSELALWAYS |
LVS_REPORT,CRect(0,0,0,0),&m_TabCtrl,2003)==0)
return -1;
// Initialization of child windows.
m_List1.InsertColumn(0,_T("Mail"),LVCFMT_LEFT,100);
m_List1.InsertItem(0,_T("Mail 1"));
m_List2.InsertColumn(0,_T("Calendar"),LVCFMT_LEFT,100);
m_List2.InsertItem(0,_T("Calendar 1"));
m_List3.InsertColumn(0,_T("Contacts"),LVCFMT_LEFT,100);
m_List3.InsertItem(0,_T("Contact 1"));
// Attaching of child windows to the TabCtrl.
if(m_TabCtrl.Add(m_List1,_T("1.Mail"),0)==NULL ||
m_TabCtrl.Add(m_List2,_T("2.Calendar"),1)==NULL ||
m_TabCtrl.Add(m_List3,_T("3.Contacts"),2)==NULL)
return -1;
// Load state from registry and update.
m_TabCtrl.LoadState(AfxGetApp(),_T("TabCtrl"),_T("State"));
m_TabCtrl.Update();
类TabCtrl不执行任何渲染。对于它的绘图,它调用TabCtrlDraw接口的功能。在一般情况下,设置,你需要创建一个从接口ITabCtrlStyle继承的对象和一个指针传递给它的风格TabCtrl,使用的功能InstallStyle。这个接口应该提供一个指针TabCtrlDraw绘图,ITabCtrlRecalc指定其区域的大小和间距,ITabCtrlBehavior正确行为的控制和ITabCtrlToolTip定义自定义标签和按钮的工具提示。样式类的对象必须存在过程中的控制工作。要做到这一点,你可以创建一个像TabCtrlComplex这样的中间阶层。如果你只有一个样式,然后用模板类TabCtrlEx。例如,作为模板参数定义的样式类的名称是:{C}
有些款式已创建。例如,风格类似的工作文件和停靠/浮动面板在Visual Studio 2003,2008和2010年的标签。要创建自己的样式,请参阅类TabCtrlStyle_VS2003_client,TabCtrlStyle_VS2003_bars,TabCtrlStyle_VS2008_client_classic等类TabCtrlRecalcStub和TabCtrlBehaviorStub创建一个默认的功能ITabCtrlRecalc和ITabCtrlBehavior接口分别实施。您可以使用它们来创建自己的风格对象。
控制需要更新(真)的调用后添加或删除选项卡,以及更改其属性和状态。
如果不完全可见,并允许工具提示(ToolTipEnable)和鼠标光标在标签的标签的文本,然后工具提示显示其文本。但是,如果被称为功能SetTabTooltipText,那么指定的文本显示始终。
控制不发送消息到父窗口,并使用事件通知接口TabCtrlNotify。使用SetNotifyManager设置指针到您的TabCtrlNotify实施。
默认情况下,所有的绘制是基于双缓冲,它排除了任何闪烁。如果你想使用VirtualWindow:DoubleBuffering(假)禁止双缓冲。
好运气。历史第28届,2010年5月初始版本六月十日,2010年新增的子窗口重定向WM_NOTIFY消息TabCtrl控制的父六月十二日,2010年更正的错误显示工具提示。