none
恢复显示CDockablePane时,如何调整整体窗口位置? RRS feed

  • 问题

  • 我的MDI程序,有很多CDockablePane继承下来的窗口。用户可以选择关闭或者显示这些CDockablePane。

    当用户关闭一个CDockablePane时,当需要再激活显示这个CDockablePane时,我用的方法是:

    m_wndLogger.ShowWindow(SW_SHOW);      // CDockablePane

    这样做的问题是:当关闭m_wndLogger时,相应的MDIClient窗口会自动调整位置,占用了关闭的m_wndLogger的区域。现在显示m_wndLogger,它会在原来位置显示,但是MDIClient却没有重新调整位置,导致m_wndLogger遮挡了MDIClient的区域。

    如何恢复显示窗口,从而MDIClient或其他窗口随同调整,不产生覆盖?

    2016年11月17日 5:36

答案

  • Hi BruceLiu_sh,

    感谢在MSDN论坛发帖。

    >>这样做的问题是:当关闭m_wndLogger时,相应的MDIClient窗口会自动调整位置,占用了关闭的m_wndLogger的区域。现在显示m_wndLogger,它会在原来位置显示,但是MDIClient却没有重新调整位置,导致m_wndLogger遮挡了MDIClient的区域。

    如何恢复显示窗口,从而MDIClient或其他窗口随同调整,不产生覆盖?

    你可以尝试使用CDockablePane::ShowPane函数显示窗口。或者使用CWnd::SetWindowPos 改变窗口位置。

    在你创建窗口时,也可以使用CDockablePane::DockToRecentPos 将窗口悬浮在存储好的位置。或者使用CDockablePane::DockToWindow 将窗口悬浮在其他窗口上面。

    关于更多CDockablePane 的使用方法,请参考以下文档。

    https://msdn.microsoft.com/en-us/library/bb984433.aspx?f=255&MSPPError=-2147217396#cdockablepane__showpane

    希望对你有所帮助。

    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.

    • 已标记为答案 BruceLiu_sh 2016年11月17日 9:52
    2016年11月17日 7:46