CMFCTabCtrl的使用、颜色样式调整

清泛编译

1.在指定位置处创建一个CMFCTabCtrl,并给其添加4个CEdit:

CRect rectTab;
CEdit m_wnd1;
CEdit m_wnd2;
CEdit m_wnd3;
CEdit m_wnd4;
CMFCTabCtrl m_wndTab;
 
m_wndTabLoc.GetWindowRect (&rectTab);
ScreenToClient (&rectTab);
 
m_wndTab.Create (CMFCTabCtrl::STYLE_3D, rectTab, this, 1,
    CMFCTabCtrl::LOCATION_TOP);
 
m_wnd1.Create (WS_CHILD | WS_VISIBLE, CRect (0, 0, 0, 0), &m_wndTab, 1);
m_wnd1.SetFont (&afxGlobalData.fontRegular);
m_wnd1.SetWindowText (_T("Edit 1"));
 
m_wnd2.Create (WS_CHILD | WS_VISIBLE, CRect (0, 0, 0, 0), &m_wndTab, 2);
m_wnd2.SetFont (&afxGlobalData.fontRegular);
m_wnd2.SetWindowText (_T("Edit 2"));
 
m_wnd3.Create (WS_CHILD | WS_VISIBLE, CRect (0, 0, 0, 0), &m_wndTab, 3);
m_wnd3.SetFont (&afxGlobalData.fontRegular);
m_wnd3.SetWindowText (_T("Edit 3"));
 
m_wnd4.Create (WS_CHILD | WS_VISIBLE, CRect (0, 0, 0, 0), &m_wndTab, 4);
m_wnd4.SetFont (&afxGlobalData.fontRegular);
m_wnd4.SetWindowText (_T("Edit 4"));
 
m_wndTab.AddTab (&m_wnd1, _T("One"), 0, FALSE);
m_wndTab.AddTab (&m_wnd2, _T("Two"), 1, FALSE);
m_wndTab.AddTab (&m_wnd3, _T("Three"), 2, FALSE);
m_wndTab.AddTab (&m_wnd4, _T("Four"), 3, FALSE);

2.为CMFCTabCtrl设置Tab标签的图标:

m_wndTab.SetImageList (IDB_ICONS, 16, RGB (255, 0,255)); 
m_wndTab.SetTabIcon (nTab, nTab);
m_wndTab.RecalcLayout ();
m_wndTab.RedrawWindow ();

3.设置CMFCTabCtrl的样式:

m_wndTab.ModifyTabStyle (style);
m_wndTab.RecalcLayout ();
m_wndTab.RedrawWindow ();

4.设置CMFCTabCtrl表头的位置(上面还是下面):

m_wndTab.SetLocation (CMFCTabCtrl::LOCATION_BOTTOM);//Tab标签在底部
m_wndTab.SetLocation (CMFCTabCtrl::LOCATION_TOP);//Tab标签在顶部
m_wndTab.RecalcLayout ();
m_wndTab.RedrawWindow ();

5.设置CMFCTabCtrl表头及边框的颜色:

CArray<COLORREF, COLORREF> arColors;
 
arColors.Add (RGB (121, 210, 231));
arColors.Add (RGB (190, 218, 153));
arColors.Add (RGB (255, 170, 100));
 
m_wndTab.EnableAutoColor (TRUE);
m_wndTab.SetAutoColors (arColors);

6.设置CMFCTabCtrl表头是否可以拖拽:

m_wndTab.EnableTabSwap (TRUE);//可以拖拽
m_wndTab.EnableTabSwap (FALSE);//不可拖拽
From:http://www.cnblogs.com/magic-cube/archive/2011/04/27/2029908.html

tsingfun.com补充:
设置AutoColor后的Tab效果如图:


MDI默认Tab样式改为上图效果的代码如下(MainFrm.cpp):
//CMDITabInfo mdiTabParams;
	//mdiTabParams.m_style = CMFCTabCtrl::STYLE_3D_ONENOTE; // 其他可用样式...
	//mdiTabParams.m_bActiveTabCloseButton = TRUE;      // 设置为 FALSE 会将关闭按钮放置在选项卡区域的右侧
	//mdiTabParams.m_bTabIcons = FALSE;    // 设置为 TRUE 将在 MDI 选项卡上启用文档图标
	//mdiTabParams.m_bAutoColor = TRUE;    // 设置为 FALSE 将禁用 MDI 选项卡的自动着色
	//mdiTabParams.m_bDocumentMenu = TRUE; // 在选项卡区域的右边缘启用文档菜单
	//EnableMDITabbedGroups(TRUE, mdiTabParams);

	CMDITabInfo mdiTabParams;
	mdiTabParams.m_style = CMFCTabCtrl::STYLE_3D_ROUNDED; // 其他可用样式...
	mdiTabParams.m_bActiveTabCloseButton = TRUE;      // 设置为 FALSE 会将关闭按钮放置在选项卡区域的右侧
	mdiTabParams.m_bTabIcons = TRUE;    // 设置为 TRUE 将在 MDI 选项卡上启用文档图标
	mdiTabParams.m_bAutoColor = TRUE;    // 设置为 FALSE 将禁用 MDI 选项卡的自动着色
	mdiTabParams.m_bDocumentMenu = TRUE; // 在选项卡区域的右边缘启用文档菜单
	mdiTabParams.m_tabLocation = CMFCTabCtrl::LOCATION_BOTTOM;
	EnableMDITabbedGroups(TRUE, mdiTabParams);
简单的Demo代码:MFCApplication1.zip

添加Tab流程:vs2010同vs2008用法

1.对话框放置PictureCtrl,设Type=Rectangle,Visible=False,Color=Gray,ID=IDC_STATIC_TAB

2.DDX_Control(pDX, IDC_STATIC_TAB, m_wndTabsArea);

3.CMFCTabCtrl m_wndTabs;

4.创建几个对话框Border=None,Style=Child,创建Dlg类

5.OnInitDialog()

CRect rectTabs;
 m_wndTabsArea.GetWindowRect (rectTabs);
 ScreenToClient (rectTabs);
 m_wndTabs.Create (CMFCTabCtrl::STYLE_3D_ROUNDED_SCROLL, rectTabs, this, 1,CMFCTabCtrl::LOCATION_TOP);
 m_DlgPic.Create(IDD_DIALOG_PIC,&m_wndTabs);
 m_wndTabs.AddTab (& m_DlgPic, _T("测试对话框"), (UINT)-1, FALSE);

CMFCTabCtrl

分享到:
评论加载中,请稍后...
创APP如搭积木 - 创意无限,梦想即时!
回到顶部