MCPcopy Create free account
hub / github.com/cinience/RedisStudio / FindControl

Method FindControl

DuiLib/Core/UIContainer.cpp:592–649  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

590 }
591
592 CControlUI* CContainerUI::FindControl(FINDCONTROLPROC Proc, LPVOID pData, UINT uFlags)
593 {
594 // Check if this guy is valid
595 if( (uFlags & UIFIND_VISIBLE) != 0 && !IsVisible() ) return NULL;
596 if( (uFlags & UIFIND_ENABLED) != 0 && !IsEnabled() ) return NULL;
597 if( (uFlags & UIFIND_HITTEST) != 0 ) {
598 if( !::PtInRect(&m_rcItem, *(static_cast<LPPOINT>(pData))) ) return NULL;
599 if( !m_bMouseChildEnabled ) {
600 CControlUI* pResult = NULL;
601 if( m_pVerticalScrollBar != NULL ) pResult = m_pVerticalScrollBar->FindControl(Proc, pData, uFlags);
602 if( pResult == NULL && m_pHorizontalScrollBar != NULL ) pResult = m_pHorizontalScrollBar->FindControl(Proc, pData, uFlags);
603 if( pResult == NULL ) pResult = CControlUI::FindControl(Proc, pData, uFlags);
604 return pResult;
605 }
606 }
607
608 CControlUI* pResult = NULL;
609 if( m_pVerticalScrollBar != NULL ) pResult = m_pVerticalScrollBar->FindControl(Proc, pData, uFlags);
610 if( pResult == NULL && m_pHorizontalScrollBar != NULL ) pResult = m_pHorizontalScrollBar->FindControl(Proc, pData, uFlags);
611 if( pResult != NULL ) return pResult;
612
613 if( (uFlags & UIFIND_ME_FIRST) != 0 ) {
614 CControlUI* pControl = CControlUI::FindControl(Proc, pData, uFlags);
615 if( pControl != NULL ) return pControl;
616 }
617 RECT rc = m_rcItem;
618 rc.left += m_rcInset.left;
619 rc.top += m_rcInset.top;
620 rc.right -= m_rcInset.right;
621 rc.bottom -= m_rcInset.bottom;
622 if( m_pVerticalScrollBar && m_pVerticalScrollBar->IsVisible() ) rc.right -= m_pVerticalScrollBar->GetFixedWidth();
623 if( m_pHorizontalScrollBar && m_pHorizontalScrollBar->IsVisible() ) rc.bottom -= m_pHorizontalScrollBar->GetFixedHeight();
624 if( (uFlags & UIFIND_TOP_FIRST) != 0 ) {
625 for( int it = m_items.GetSize() - 1; it >= 0; it-- ) {
626 CControlUI* pControl = static_cast<CControlUI*>(m_items[it])->FindControl(Proc, pData, uFlags);
627 if( pControl != NULL ) {
628 if( (uFlags & UIFIND_HITTEST) != 0 && !pControl->IsFloat() && !::PtInRect(&rc, *(static_cast<LPPOINT>(pData))) )
629 continue;
630 else
631 return pControl;
632 }
633 }
634 }
635 else {
636 for( int it = 0; it < m_items.GetSize(); it++ ) {
637 CControlUI* pControl = static_cast<CControlUI*>(m_items[it])->FindControl(Proc, pData, uFlags);
638 if( pControl != NULL ) {
639 if( (uFlags & UIFIND_HITTEST) != 0 && !pControl->IsFloat() && !::PtInRect(&rc, *(static_cast<LPPOINT>(pData))) )
640 continue;
641 else
642 return pControl;
643 }
644 }
645 }
646
647 if( pResult == NULL && (uFlags & UIFIND_ME_FIRST) == 0 ) pResult = CControlUI::FindControl(Proc, pData, uFlags);
648 return pResult;
649 }

Callers

nothing calls this directly

Calls 5

IsVisibleMethod · 0.80
GetFixedWidthMethod · 0.80
GetFixedHeightMethod · 0.80
IsFloatMethod · 0.80
GetSizeMethod · 0.45

Tested by

no test coverage detected