//------------------------------------------------------------------------// CBCGPDockManager* CBCGPGlobalUtils::GetDockManager (CWnd* pWnd) { if (pWnd == NULL) { return NULL; } ASSERT_VALID (pWnd); if (pWnd->IsKindOf (RUNTIME_CLASS (CBCGPFrameWnd))) { return ((CBCGPFrameWnd*) pWnd)->GetDockManager (); } else if (pWnd->IsKindOf (RUNTIME_CLASS (CBCGPMDIFrameWnd))) { return ((CBCGPMDIFrameWnd*) pWnd)->GetDockManager (); } else if (pWnd->IsKindOf (RUNTIME_CLASS (CBCGPOleIPFrameWnd))) { return ((CBCGPOleIPFrameWnd*) pWnd)->GetDockManager (); } else if (pWnd->IsKindOf (RUNTIME_CLASS (CBCGPOleDocIPFrameWnd))) { return ((CBCGPOleDocIPFrameWnd*) pWnd)->GetDockManager (); } else if (pWnd->IsKindOf (RUNTIME_CLASS (CBCGPMDIChildWnd))) { return ((CBCGPMDIChildWnd*) pWnd)->GetDockManager (); } else if (pWnd->IsKindOf (RUNTIME_CLASS (CDialog)) || pWnd->IsKindOf (RUNTIME_CLASS (CPropertySheet))) { if (pWnd->GetSafeHwnd() == AfxGetMainWnd()->GetSafeHwnd()) { m_bDialogApp = TRUE; } } else if (pWnd->IsKindOf (RUNTIME_CLASS (CBCGPOleCntrFrameWnd))) { return ((CBCGPOleCntrFrameWnd*) pWnd)->GetDockManager (); } else if (pWnd->IsKindOf (RUNTIME_CLASS (CBCGPMiniFrameWnd))) { CBCGPMiniFrameWnd* pMiniFrameWnd = DYNAMIC_DOWNCAST (CBCGPMiniFrameWnd, pWnd); ASSERT_VALID (pMiniFrameWnd); CBCGPDockManager* pManager = pMiniFrameWnd->GetDockManager (); return pManager != NULL ? pManager : GetDockManager (m_bUseMiniFrameParent ? pMiniFrameWnd->GetParent() : pWnd->GetParent ()); } return NULL; }
//--------------------------------------------------------------------------------------// void CBCGPDragFrameImpl::Init (CWnd* pDraggedWnd) { ASSERT_VALID (pDraggedWnd); m_pDraggedWnd = pDraggedWnd; CWnd* pDockSite = NULL; if (m_pDraggedWnd->IsKindOf (RUNTIME_CLASS (CBCGPMiniFrameWnd))) { CBCGPMiniFrameWnd* pMiniFrame = DYNAMIC_DOWNCAST (CBCGPMiniFrameWnd, m_pDraggedWnd); pDockSite = pMiniFrame->GetParent (); } else if (m_pDraggedWnd->IsKindOf (RUNTIME_CLASS (CBCGPControlBar))) { CBCGPControlBar* pBar = DYNAMIC_DOWNCAST (CBCGPControlBar, m_pDraggedWnd); ASSERT_VALID (pBar); CBCGPMiniFrameWnd* pParentMiniFrame = pBar->GetParentMiniFrame (); if (pParentMiniFrame != NULL) { pDockSite = pParentMiniFrame->GetParent (); } else { pDockSite = pBar->GetDockSite (); } } m_pDockManager = globalUtils.GetDockManager (pDockSite); if (globalUtils.m_bDialogApp) { return; } ASSERT(m_pDockManager != NULL); }