使用 MFC Feature Pack 1 在 VS2008 中停靠选项卡式窗格位置

Posted

技术标签:

【中文标题】使用 MFC Feature Pack 1 在 VS2008 中停靠选项卡式窗格位置【英文标题】:Docking Tabbed Pane position in VS2008 with MFC Feature Pack 1 【发布时间】:2010-07-30 10:55:35 【问题描述】:

使用命名来自 http://msdn.microsoft.com/en-us/library/cc309030.aspx

当我将 CPaneDialog 与另一个 CDockablePane 对接时,选项卡式窗格位置 始终位于停靠区底部,如何将选项卡式窗格位置设置为顶部 像普通选项卡式控件一样停靠区域?

【问题讨论】:

【参考方案1】:

好的,我已经想通了,所以我会回答我自己的问题:)

当 CDockablePane 相互对接时,MFC 会创建 CBaseTabbedPane 来容纳 CDockablePanes。要将默认为底部的选项卡位置(如在 Visual Studio 中)更改为顶部(如在普通选项卡中),您需要在 CDockablePane 派生类中覆盖此方法

void CDockablePane::OnAfterDock(CBasePane* /*pBar*/, LPCRECT /*lpRect*/, AFX_DOCK_METHOD /*dockMethod*/);

使用此代码:

CBaseTabbedPane* tabbedPane = GetParentTabbedPane();
if (!tabbedPane) return;

CMFCBaseTabCtrl* tabCtrl = tabbedPane->GetUnderlyingWindow();
if (!tabCtrl) return;

tabCtrl->SetLocation(CMFCBaseTabCtrl::LOCATION_TOP);

HWND hWndTab = NULL;
CMFCBaseTabCtrl* parent = GetParentTabWnd(hWndTab);
if (parent)

    parent->SetLocation(CMFCBaseTabCtrl::LOCATION_TOP);

您需要在所有 CDockablePane 派生类中重写此方法才能正常工作,否则选项卡位置将取决于您拖动到停靠另一个窗格的窗格。

例如:PaneA 有代码将标签位置设置为顶部,但 PaneB 没有。

如果拖动 PaneA 与 PaneB 对接,选项卡位置将位于顶部。

如果您将 PaneB 拖到与 PaneA 对接,标签位置将在底部,这是默认的。

【讨论】:

【参考方案2】:

修改CTabbedPane::m_bTabsAlwaysTop得到了满意的结果。

【讨论】:

以上是关于使用 MFC Feature Pack 1 在 VS2008 中停靠选项卡式窗格位置的主要内容,如果未能解决你的问题,请参考以下文章

如何在 vc 2008 上使用“Visual C++ 2008 Feature Pack”?

我在哪里可以找到 Series 40 第 5 版 SDK,Feature Pack 1 Lite 以供下载?

阿里云HBase全新发布X-Pack 赋能轻量级大数据平台

Porsche PIWIS III with V37.250.020 Piwis 3 Software Update New Feature

Atitit. Atiposter 发帖机 新特性 poster new feature v11  .docx

dskinlite(uieasy mfc界面库)使用记录1: schema验证xml