DOCUMENT:Q216461 07-FEB-2002 [visualc] TITLE :BUG: Toolbar Covers Document in MFC ActiveX Document Container PRODUCT :Microsoft C Compiler PROD/VER::6.0 OPER/SYS: KEYWORDS:kbole kbActiveDocs kbActiveX kbAppToolBar kbCOMt kbContainer kbMFC kbToolbar KbUIDesign ====================================================================== ------------------------------------------------------------------------------- The information in this article applies to: - The Microsoft Foundation Classes (MFC), used with: - Microsoft Visual C++, 32-bit Enterprise Edition, version 6.0 - Microsoft Visual C++, 32-bit Professional Edition, version 6.0 - Microsoft Visual C++, 32-bit Learning Edition, version 6.0 - Microsoft Visual C++.NET (2002) ------------------------------------------------------------------------------- SYMPTOMS ======== If you create an MFC AppWizard-generated ActiveX document container, insert a Microsoft Word document or Excel Spreadsheet, and move a toolbar from the top to the left side of the window, without dragging the toolbar through the main window, the toolbar will cover part of the document. CAUSE ===== This problem is caused by CFrameWnd::RecalcLayout() not being called when the toolbar is docked on the left side of the frame window. RESOLUTION ========== Force CFrameWnd::RecalcLayout() to be called from the OnShowControlBars() function of the COleDocObjectItem-derived class. Perform the following steps to do this: 1. Add the declaration of OnShowControlBars() to the COleDocObjectItem-derived class, which is declared in the Cntritem.h file: virtual BOOL OnShowControlBars(CFrameWnd*, BOOL); 2. Implement OnShowControlBars() of the COleDocObjectItem-derived class in theCntritem.cpp file: BOOL CAXContainerCntrItem::OnShowControlBars(CFrameWnd* pFrameWnd, BOOL bShow) { BOOL bResult = COleDocObjectItem::OnShowControlBars(pFrameWnd, bShow); if(pFrameWnd->m_nIdleFlags & CFrameWnd::idleLayout) pFrameWnd->RecalcLayout(); return bResult; } STATUS ====== Microsoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. MORE INFORMATION ================ Steps to Reproduce Behavior --------------------------- 1. Create a new SDI or MDI AppWizard project and select ActiveX document container support. 2. On the Build menu, click Run. 3. On the Edit menu, click Insert Object. 4. Select Microsoft Word Document. 5. Maximize the MDI Child window (only for MDI applications). 6. On the View menu, click Normal. 7. Grab the toolbar right above the document, and drag it to the left docking position without dragging the cursor into the main window. REFERENCES ========== (c) Microsoft Corporation 1999, All Rights Reserved. Contributions by Bret Bentzinger, Microsoft Corporation. Additional query words: ====================================================================== Keywords : kbole kbActiveDocs kbActiveX kbAppToolBar kbCOMt kbContainer kbMFC kbToolbar KbUIDesign kbVC600bug kbGrpDSMFCATL Technology : kbAudDeveloper kbMFC Version : :6.0 Issue type : kbbug Solution Type : kbpending ============================================================================= THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY. Copyright Microsoft Corporation 2002.