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 Tech Support » Assertion when hiding toolbars Collapse All
Subject Author Date
Thomas Maurer Dec 16, 2005 - 4:16 AM


Hello


When I am autohiding a toolbar (containing two tabbed controlbars) I get the following assertion:


(extcontrolbar.cpp; line 16900)


ASSERT( ((CExtDockBar*)pWndParent)->_GetCircleNo() > 0 );


When I ignore the assertion everything seems to work fine, so I have no idea what’s happening. I also think that I only have this behaviour since version 2.50 (which I am currently using).


Thanks in advance


Thomas

Technical Support Dec 16, 2005 - 8:51 AM

We guess you have used the CFrameWnd::DockControlBar() method to dock both toolbars and resizable control bars. But this method cannot be used for resizable bars. Please use only the CExtControlBar::DockControlBarInnerOuter(), CExtControlBar::DockControlBarLTRB() and CExtControlBar::DockControlBarIntoTabbedContainer() methods instead. The CExtControlBar::DockControlBarInnerOuter() methods will dock the resizable bar to a valid position in the inner part of the main frame window. Other two methods will dock one bar relative to another one.


Thomas Maurer Dec 16, 2005 - 3:01 PM

Thank you for your answer. CExtControlBar::DockControlBar works also. I chose that one because I think this was the easiest to understand. Is there a problem with that? Will something go wrong some place else?


Thomas


 

Technical Support Dec 19, 2005 - 2:38 AM

The resizable control bar is a more advanced dockable window than any of control bars available in MFC. That is why we had to code our own version of those methods for specifying docked locations. The CExtControlBar::DockControlBar() method is supported only for compatibility with older Prof-UIS versions. We think the CExtControlBar::DockControlBarInnerOuter() and CExtControlBar::DockControlBarLTRB() methods are easier to understand and to use. You can simply dock several of your bars using the CExtControlBar::DockControlBarInnerOuter() method and organize a nested bars layout in the frame window. Then you can dock several next bars using the CExtControlBar::DockControlBarLTRB() method, which allows you to dock more than one bar into one row/column of bars and organize horizontal rows with bars inside vertical columns with bars and vice versa.

We would like to ask you to read the Docking Mechanism Explained article (http://www.prof-uis.com/ArticleRead.aspx?AID=142). It may be helpful with regard to the CExtControlBar::DockControlBar...() methods.