none
MDI MFC活动文档容器插入word2007,编辑区域点击闪动,VS2008的Bug? RRS feed

  • 常规讨论

  • 大家好!

    我最近遇到个问题,关于在MDI MFC插入word 2007.

    首先,通过VS2008 SP1创建MDI MFC程序,支持Active Document Container,使用office 2007visual manager。然后编译,插入OLE控件word2007,显示在一个tab页面。

    奇怪的是,当我点击word编辑区域,或者在word编辑区域输入内容时,word窗口不停的闪动,这是2008的Bug吗?

    我跟踪了一下这个问题,发现一些线索,重载NegotiateBorderSpace. 代码如下:

    BOOL CMainFrame::NegotiateBorderSpace( UINT nBorderCmd, LPRECT lpRectBorder )
    {
     CRect border, request;

     switch(nBorderCmd)
     {
     case borderGet:
      {
       CFrameWnd::NegotiateBorderSpace(nBorderCmd, lpRectBorder);
       //m_dockManager.AdjustDockingLayout();
       CRect rectBounds = m_dockManager.GetClientAreaBounds();
       ENSURE(lpRectBorder != NULL);

       *lpRectBorder = rectBounds;
       break;
      }
     case borderRequest:
      return TRUE;

     case borderSet:
      return CFrameWnd::NegotiateBorderSpace(nBorderCmd, lpRectBorder);

     default:
      ASSERT(FALSE);  // invalid CFrameWnd::BorderCmd
     }

     return TRUE;
    }

    如果注释掉"m_dockManager.AdjustDockingLayout();" 这行,闪动就不出现了.

    但是可能会出现其他问题,比如最大化时.

    我想知道,这是VS 2008 MFC的Bug吗,有没有更完美的解决办法?

    非常感谢! 

    2011年11月16日 7:20