65.9K
CodeProject 正在变化。 阅读更多。
Home

Visual C++ 的简单选项卡控件:第 2 部分

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.84/5 (21投票s)

2006年11月22日

CPOL

2分钟阅读

viewsIcon

110753

downloadIcon

3533

使用标签控件开发界面的简单方法。

Sample Image - Simple_Tab_Control.jpg

引言

我借此机会感谢所有评论并提供了关于我以前的标签控件的意见的朋友们。它让我为你们所有人构建了这个有用且易于使用的标签控件。

关于这个新的标签控件

如果您使用此特定标签控件,您必须执行以下步骤

  1. 将 VC++ 标签控件拖放到您的对话框上。
  2. CIbTabCtrl.cCIbTabCtrl.h 添加到您的解决方案中。
  3. CIbTabCtrl 派生标签控件变量。

您可以自由地使用属性页设计您的标签页。使用“添加资源”选项将属性页添加到您的应用程序中。然后使用 CPropertyPage 创建一个与属性页关联的类。您可以向您的应用程序添加任意数量的属性页。为了使它在视觉上适合标签控件,您可以设置以下属性值

  • 将边框属性设置为“无”
  • 将控件属性设置为“True”(这非常重要;如果为 false,则 Tab 键功能将不起作用)。
  • 将禁用属性设置为“False”

一旦您创建了属性页,您必须将这些页与您的标签控件链接起来。

如何将页面与标签控件链接

  1. 将属性页对象创建为控件所在的对话框的成员(如果属性页类是 CPPoneCPPTwo
  2. CPPOne m_oPPOne;
    CPPTwo m_oPPTwo;
  3. 在 OnInitDialog 成员函数上
  4. m_oPPOne.Create(IDD_PP_ONE);
    m_oPPTwo.Create(IDD_PP_TWO);
    
    // Using the addNewPage() function, user can set tab caption and the
    // property page user wants to attach with it.
    
    // setDefaultPage() will determine which page should have the very first focus.
    
    m_ctrlTabV.addNewPage("My Page 1",&m_oPPOne);
    m_ctrlTabV.addNewPage("My Page 2",&m_oPPTwo);
    m_ctrlTabV.setDefaultPage(0); 

就是这样!这就是您在解决方案中使用此控件所需要做的全部。

对于那些对 CIbTabCtrl 类感兴趣的人

此类是从 MFC CTabCtrl 类派生的。我添加了三个函数

  1. AddNewPage(CString strPage, CWnd * pPage) (public)
  2. 这将跟踪所有已添加的页面。在这里,我使用 CArray 成员变量来保存这些页面。

    InsertItem(this->GetItemCount(),strPage);
    pPage->ShowWindow(SW_HIDE);
    m_oPages.Add(pPage); // store page;
  3. setPage(CWnd* pWnd) (private member function)
  4. 这将根据标签控件的大小显示和绘制页面。

    CIbTabCtrl::setPage(CWnd* pWnd)
    {
        CWnd * pPage;
        pPage = m_oPages.GetAt(m_iPrevPage);
        pPage->ShowWindow(SW_HIDE);
        CRect oRect,oWRect,oPWRect,oIRect;
        GetItemRect(0,oIRect);
        GetClientRect(oRect);
        GetWindowRect(oWRect);
        GetParent()->GetWindowRect(oPWRect);
        pWnd->SetWindowPos(this,oWRect.left-oPWRect.left,oWRect.top-oPWRect.top,
              oRect.Width()- 5,oRect.Height()-oIRect.Height() - void 6, SWP_SHOWWINDOW);
    }
  5. setDefaultPage(int iIndex) (public)
  6. 设置默认页面。

  7. removePage(int iIndex) (public)
  8. 这将从标签控件中删除标签页。

希望此说明足以让您使用此控件。您可以随意提出关于这篇文章的任何问题。我相信您会非常喜欢这个控件。

© . All rights reserved.