//******************************************************************************* BOOL CBCGPBaseTabbedBar::FloatTab (CWnd* pBar, int nTabID, BCGP_DOCK_METHOD dockMethod, BOOL bHide) { ASSERT_VALID (this); ASSERT_VALID (pBar); ASSERT_VALID (m_pTabWnd); CString strWndText; pBar->GetWindowText (strWndText); if (strWndText.IsEmpty ()) { if (m_pTabWnd->GetTabLabel (nTabID, strWndText)) { pBar->SetWindowText (strWndText); } } m_pTabWnd->RemoveTab (nTabID); if (dockMethod == BCGP_DM_MOUSE) { m_pTabWnd->SendMessage (WM_LBUTTONUP, 0, 0); } CBCGPDockingControlBar* pDockingBar = DYNAMIC_DOWNCAST (CBCGPDockingControlBar, pBar); if (pDockingBar != NULL) { pDockingBar->StoreRecentTabRelatedInfo (); } if (dockMethod == BCGP_DM_DBL_CLICK && pDockingBar != NULL) { CBCGPMultiMiniFrameWnd* pParentMiniFrame = DYNAMIC_DOWNCAST (CBCGPMultiMiniFrameWnd, GetParentMiniFrame ()); if (pParentMiniFrame != NULL) { pParentMiniFrame->DockRecentControlBarToMainFrame (pDockingBar); return TRUE; } else if (m_hDefaultSlider != NULL && IsWindow (m_hDefaultSlider)) { CBCGPMultiMiniFrameWnd* pRecentMiniFrame = DYNAMIC_DOWNCAST (CBCGPMultiMiniFrameWnd, CWnd::FromHandlePermanent (pDockingBar->m_recentDockInfo.m_hRecentMiniFrame)); if (pRecentMiniFrame != NULL && pRecentMiniFrame->AddRecentControlBar (pDockingBar)) { return TRUE; } } } if (pBar->IsKindOf (RUNTIME_CLASS (CBCGPControlBar))) { CBCGPControlBar* pControlBar = DYNAMIC_DOWNCAST (CBCGPControlBar, pBar); ASSERT_VALID (pControlBar); pControlBar->FloatControlBar (pControlBar->m_recentDockInfo.m_rectRecentFloatingRect, dockMethod, !bHide); return TRUE; } return FALSE; }