Professional UI Solutions
Site Map   /  Register
 
 

Forum

Please Log In to post a new message or reply to an existing one. If you are not registered, please register.

NOTE: Some forums may be read-only if you are not currently subscribed to our technical support services.

Forums » Prof-UIS General Discussion » Problem Prof-uis 2.87 Docking refresh SDI DynamicBar Collapse All
Subject Author Date
Stephane Leger Feb 2, 2010 - 1:09 PM

Hi Team,<o:p></o:p>


I sent you mails (first January 15) about a refresh problem when docking Dynamic bar in my application. This problem appeared with version 2.87. In the mail a sent you the repro steps with screen shots using your SDI_DynamicBars sample that has the same problem. Could you confirm the problem? Do you think you can have a solution soon?<o:p></o:p>


email Subject: Problem Prof-uis 2.87 Docking refresh SDI DynamicBar.<o:p></o:p>


Thank you.<o:p></o:p>


Stephane.<o:p></o:p>


 

Technical Support Feb 18, 2010 - 1:54 PM

It looks like we fixed this issue. Please update the source code for the following method:

// dock control bar relatively to other control bar using
// space percent specification (extended version)
bool CExtControlBar::DockControlBarLTRB(
      int nPercentToOccupy, // greater than zero and less than one hundred
      CExtControlBar * pBarTarget,
      UINT nDockBarID, // = AFX_IDW_DOCKBAR_BOTTOM
      bool bRecalcLayout // = true
      )
{
      ASSERT_VALID( this );
      ASSERT_KINDOF( CExtControlBar, this );
      ASSERT_VALID( pBarTarget );
      ASSERT_KINDOF( CExtControlBar, pBarTarget );
      ASSERT_DOCKBAR_DLGCTRLID_DOCKED( nDockBarID );

      ASSERT_VALID( pBarTarget->m_pDockBar );
      ASSERT_KINDOF( CDockBar, pBarTarget->m_pDockBar );
      ASSERT( ! IsFixedMode() );
      ASSERT( ! pBarTarget->IsFixedMode() );

      ASSERT( 0 < nPercentToOccupy && nPercentToOccupy < 100 );
#ifdef _DEBUG
      if( m_pDockBar != NULL )
      {
            ASSERT_VALID( m_pDockBar );
            ASSERT_KINDOF( CDockBar, m_pDockBar );
      }
#endif // _DEBUG

CFrameWnd * pParentFrame = GetParentFrame();
CFrameWnd * pDockSite = m_pDockSite;

#if (!defined __EXT_MFC_NO_DOCK_MARKERS)
      if(         pParentFrame != NULL
            &&    pParentFrame->IsKindOf( RUNTIME_CLASS(CExtMiniDockFrameWnd) )
            &&    _DraggingGetBar() == this
            &&    INT(OnQueryDockingType()) >= INT(__RESIZABLE_DOCKING_TYPE_STUDIO_2005)
            )
            pParentFrame->ShowWindow( SW_HIDE );
#endif // (!defined __EXT_MFC_NO_DOCK_MARKERS)

#if (!defined __EXT_MFC_NO_TAB_CONTROLBARS)
CExtDynTabControlBar * pTargetTabBar =
            pBarTarget->_GetNearestTabbedContainer();
      if( pTargetTabBar != NULL )
      {
            ASSERT_VALID( pTargetTabBar );
            pBarTarget = pTargetTabBar;
            ASSERT_VALID( pBarTarget->m_pDockBar );
            ASSERT_KINDOF( CDockBar, pBarTarget->m_pDockBar );
            ASSERT( ! pBarTarget->IsFixedMode() );
      } // if( pTargetTabBar != NULL )
#endif // (!defined __EXT_MFC_NO_TAB_CONTROLBARS)

bool bRecalcDockSite = true;
      pParentFrame = pBarTarget->GetParentFrame();
      ASSERT_VALID( pParentFrame );
      if(         pParentFrame != pBarTarget->m_pDockSite
            &&    (m_pDockSite != NULL && pParentFrame != m_pDockSite )
            )
            bRecalcDockSite = false;
HWND hWndSrcFrame = NULL;
      if( m_pDockSite != NULL )
      {
            hWndSrcFrame = GetParentFrame()->GetSafeHwnd();
            if( hWndSrcFrame == pBarTarget->m_pDockSite->GetSafeHwnd() )
                  hWndSrcFrame = NULL;
      } // if( m_pDockSite != NULL )

      pBarTarget->DelayShow( TRUE );
      DelayShow( TRUE );
HWND hWndBarTarget = pBarTarget->GetSafeHwnd();
      _DisplayingSet( false );
      pBarTarget->_DraggingDoDeepHalfSplit(
            this,
            nDockBarID,
            nPercentToOccupy
            );
      _DisplayingSet( false );
bRecalcLayout = bRecalcDockSite = true;
      if( bRecalcLayout )
      {
            ASSERT_VALID( pParentFrame );
            pParentFrame->RecalcLayout();
            if( hWndSrcFrame != NULL && ::IsWindow(hWndSrcFrame) )
            {
                  CWnd * pWnd = CWnd::FromHandlePermanent( hWndSrcFrame );
                  if( pWnd != NULL )
                  {
                        ASSERT_VALID( pWnd );
                        CFrameWnd * pFrame =
                              DYNAMIC_DOWNCAST( CFrameWnd, pWnd );
                        if( pFrame != NULL )
                              pFrame->RecalcLayout();
                  } // if( pWnd != NULL )
            } // if( hWndSrcFrame != NULL && ::IsWindow(hWndSrcFrame) )
            if(         bRecalcDockSite
                  &&    ::IsWindow( hWndBarTarget )
                  )
                  pBarTarget->m_pDockSite->RecalcLayout();
      } // if( bRecalcLayout )

      CExtControlBar::stat_AdjustOccCompatibilityTree( pDockSite );

      return true;
}


Stephane Leger Feb 11, 2010 - 10:13 AM

No the problem still exist if you follows the steps in my mail the bar disappear each time you dock it when it come from the TabbedDocument!


Thanks


Stephane.

Technical Support Feb 8, 2010 - 12:58 PM

The nested docked control bar layout problem was fixed in Prof-UIS 2.88.

Stephane Leger Feb 5, 2010 - 8:42 AM

Hi Team,


I just send it. Hope you will get it


Thanks.


Stephane.

Technical Support Feb 3, 2010 - 10:41 AM

Hi Stephane,

We are sorry but we have checked our mail box again and haven’t found your email. Could you resend it again to support@prof-uis.com and/or to profuis@gmail.com?