none
多个CDockablePane组成的MDI工程里面的一些疑问 RRS feed

  • 问题

  • 1.停靠窗CDockablePane,首次启动,如果是上下停靠,高度不会超过主界面高度的一半,左右停靠,宽度不会超过主界面宽度的一半,这问题有办法解决吗?

    2.多个停靠窗CDockablePane停靠的结果是,中间必然有一片MDI区域,我想把MDI这片区域用一个CDockablePane给替换掉,客户区完全由多个CDockablePane组成,请问有什么好的办法吗?

    2018年5月17日 1:31

全部回复

  • Hi,

    感谢在MSDN论坛发帖。

    >>1.停靠窗CDockablePane,首次启动,如果是上下停靠,高度不会超过主界面高度的一半,左右停靠,宽度不会超过主界面宽度的一半,这问题有办法解决吗?

    你可以使用CDockingManager类来管理CDockablePane的布局。例如在初始化的时候使用CDockingManager::AdjustDockingLayout来修改CDockablePane的位置和大小。或者使用CDockingManager::SetDockState来将CDockablePane的状态存储起来,在初始化的时候使用LoadState来加载CDockablePane。

    >>2.多个停靠窗CDockablePane停靠的结果是,中间必然有一片MDI区域,我想把MDI这片区域用一个CDockablePane给替换掉,客户区完全由多个CDockablePane组成,请问有什么好的办法吗?

    你指的是Client Area吗?这个是MFC框架的一部分。你可以尝试创建一个CDockablePane停靠在主窗口上最大化,占用整个Client Area,并使用CDockingManager::LockUpdate锁住其状态。

    Best Regards,

    Baron Bi


    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.

    2018年5月17日 7:53
  • 感谢你的回答,

    其实这两个问题基本上可以结合为一个问题,CDockablePane停靠在Client Area可以占用任意大小区域,

    >>AdjustDockingLayout来修改CDockablePane的位置和大小

    这个具体怎么用怎么实现呢?

    >>SetDockState来将CDockablePane的状态存储起来,在初始化的时候使用LoadState来加载CDockablePane。

    这个方法据我所知应该是保存到注册表然后从注册表里面加载,可是我这个是首次启动,能大概给我个具体点的实现思路吗?或者怎么最大化CDockablePane,使其占满整个Client Area?

    谢谢

    2018年5月18日 2:34