int CControlBar::OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT nMsg) { // call default when toolbar is not floating if (!IsFloating()) return CWnd::OnMouseActivate(pDesktopWnd, nHitTest, nMsg); // special behavior when floating ActivateTopParent(); return MA_NOACTIVATE; // activation already done }
void CMiniDockFrameWnd::OnNcLButtonDown(UINT nHitTest, CPoint point) { if (nHitTest == HTCAPTION) { // special activation for floating toolbars ActivateTopParent(); // initiate toolbar drag for non-CBRS_FLOAT_MULTI toolbars if ((m_wndDockBar.m_dwStyle & CBRS_FLOAT_MULTI) == 0) { CControlBar* pBar = (CControlBar*)m_wndDockBar.m_arrBars[1]; ASSERT(pBar != NULL); ASSERT(pBar->IsKindOf(RUNTIME_CLASS(CControlBar))); ASSERT(pBar->m_pDockContext != NULL); pBar->m_pDockContext->StartDrag(point); return; } } CMiniFrameWnd::OnNcLButtonDown(nHitTest, point); }
void CExtMiniDockFrameWnd::OnNcLButtonDown(UINT nHitTest, CPoint point) { CExtControlBar * pExtBar = GetControlBarExt(); CPoint p(point); CRect rcWnd; GetWindowRect( &rcWnd ); p.Offset( -rcWnd.left, -rcWnd.top ); if( m_rcBtnHideBar.PtInRect( p ) ) return; if( nHitTest == HTCAPTION ) { ActivateTopParent(); BringWindowToTop(); if( (m_wndDockBar.m_dwStyle & CBRS_FLOAT_MULTI) == 0 ) { int nPos = 1; CControlBar* pBar = NULL; while( pBar == NULL && nPos < m_wndDockBar.m_arrBars.GetSize() ) pBar = reinterpret_cast < CExtDockBar & > (m_wndDockBar). GetDockedControlBar(nPos++); ASSERT(pBar != NULL); ASSERT_KINDOF( CControlBar, pBar ); ASSERT( pBar->m_pDockContext != NULL ); if( pExtBar == NULL || (!pExtBar->IsShowContentWhenDragging()) ) { pBar->m_pDockContext->StartDrag(point); return; } int nCyGripper = min( pExtBar->m_rcGrip.Width(), pExtBar->m_rcGrip.Height() ); pExtBar->_DraggingStart( point, point - rcWnd.TopLeft() - CPoint( nCyGripper, nCyGripper/2 ) ); return; } } else if( nHitTest >= HTSIZEFIRST && nHitTest <= HTSIZELAST ) { ActivateTopParent(); int nPos = 1; CControlBar * pBar = NULL; while( pBar == NULL && nPos < m_wndDockBar.m_arrBars.GetSize() ) pBar = reinterpret_cast < CExtDockBar & > (m_wndDockBar).GetDockedControlBar(nPos++); ASSERT(pBar != NULL); ASSERT_KINDOF(CControlBar, pBar); ASSERT(pBar->m_pDockContext != NULL); ASSERT( (m_wndDockBar.m_dwStyle & CBRS_FLOAT_MULTI) == 0 ); if( !pBar->IsKindOf(RUNTIME_CLASS(CExtControlBar)) ) CMiniDockFrameWnd::OnNcLButtonDown( nHitTest, point); else { CExtControlBar * pExtBar = (CExtControlBar *)pBar; if( !pExtBar->IsShowContentWhenDragging() ) { pBar->m_pDockContext->StartResize(nHitTest,point); return; } ClientToScreen( &point ); _ResizingStart( nHitTest, point ); } return; } else if( nHitTest == HTMINBUTTON || nHitTest == HTMAXBUTTON || nHitTest == HTGROWBOX ) return; CMiniFrameWnd::OnNcLButtonDown( nHitTest, point ); }