none
CDockablePane->DockToWindow()无法正确设定Pane位置 RRS feed

  • 问题

  • 程序中有7、8个CDockablePane,已经将其中几个用AttachToTabWindow分成几组。

    现在想要排列这几组的窗口位置。

    有的在左侧,有的左下角,有的右下角。

    根据文档,如果排列DockPane的位置而不想用Tab的话,使用DockToWindow(CDockalePane *pTarget, dwAlignment);函数。

    现在设置这个分组时候,DockToWindow一直返回FALSE,未起作用。

    跟踪进源码以后,发现其判断一下缺省PaneDiveder,发现为空直接返回了。

           
    CPaneDivider* pSlider = pTargetWindow->GetDefaultPaneDivider();	
    if (pSlider == NULL)	
    {		
         ShowWindow(SW_SHOW);		
         return FALSE;	
    }


    查文档说,要在pTarget的窗已经处于停靠状态才有效,我把这行调用发在CMainFrame->ShowWindow(nCmdLine)/UpdateWindow()调用之后,仍然没有效果。

    就是说,没有办法在初始状态下,把两个停靠窗并排放置。

    请问这个问题如何解决?


    2017年2月27日 9:03

全部回复

  • Hi BruceLiu_sh,

    感谢在MSDN论坛发帖。

    >>根据文档,如果排列DockPane的位置而不想用Tab的话,使用DockToWindow(CDockalePane *pTarget, dwAlignment);函数。

    现在设置这个分组时候,DockToWindow一直返回FALSE,未起作用。

    跟踪进源码以后,发现其判断一下缺省PaneDiveder,发现为空直接返回了。

    在你创建DockPane或者调用DockToWindow之前,有没有尝试过使用CDockablePane::CreateDefaultPaneDivider来创建一个缺省的PaneDiveder?

    Best Regards,

    Sera Yu


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.


    • 已编辑 Baron Bi 2017年2月28日 1:47
    • 已建议为答案 Baron Bi 2017年3月2日 6:52
    2017年2月28日 1:46