none
关于CDockablePane叠在一起,然后浮动其中一个的问题 RRS feed

  • 问题

  • 当A、B两个CDockablePane叠在一起,点击X关闭或者调用ShowPane(FALSE, FALSE, FALSE)隐藏A,然后右键菜单浮动起B,之前隐藏的A就会在原位置显示出来了,

    现在由于右键菜单我要替换里面的菜单项,自己做了一个浮动按钮代码如下

    BOOL bWasFloated = FALSE;
    
    	CBaseTabbedPane* pTabbedBar = DYNAMIC_DOWNCAST(CBaseTabbedPane, GetParentTabbedPane());
    	if (pTabbedBar != NULL && 1 != pTabbedBar->GetVisibleTabsNum())
    	{
    		ASSERT_VALID(pTabbedBar);
    
    		CMFCBaseTabCtrl* pTabWnd = pTabbedBar->GetUnderlyingWindow();
    		if (pTabWnd != NULL)
    		{
    			ASSERT_VALID(pTabWnd);
    
    			const int nTabID = pTabWnd->GetActiveTab();
    			CWnd* pWnd = pTabWnd->GetTabWnd(nTabID);
    
    			if (pWnd != NULL && pTabWnd->IsTabDetachable(nTabID))
    			{
    				bWasFloated = pTabbedBar->DetachPane(pWnd, FALSE);
    				if (bWasFloated)
    				{
    					if (pTabWnd->GetTabsNum() > 0 &&
    						pTabWnd->GetVisibleTabsNum() == 0)
    					{
    						pTabbedBar->ShowPane(FALSE, FALSE, FALSE);
    					}
    				}
    			}
    		}
    	}
    
    	if (!bWasFloated && TRUE)
    	{
    		FloatPane(m_recentDockInfo.m_rectRecentFloatingRect);
    	}

    点击浮动按钮,B窗口浮动是没有问题的,但是这时候之前隐藏的A没有显示出来,并且之前窗口的位置还显示的是B窗口(一个假死的窗口),再点击一次浮动才可以显示出A,这可能是什么原因导致的


    • 已编辑 Hota_CT 2019年2月15日 12:09
    2019年2月15日 8:04

答案

全部回复

  • 你好,

    感谢在MSDN论坛发帖提问。

    请问你是在什么平台什么环境下出现的这个问题?能否提供详细的截图图解说明?如果你能提供简单的代码示例,让我们重现你的问题,我们将为你提供更有效的帮助。

    Best wishes,

    Jeanine Zhang

    2019年2月15日 8:53
    版主
  • VS2017下的问题
    2019年2月15日 12:10
  • 是我自己一个分支写错了导致的问题
    • 已标记为答案 Hota_CT 2019年2月19日 1:07
    2019年2月19日 1:07