none
如何记录CDockablePane的窗口大小? RRS feed

  • 问题

  • 现在CDockablePane,经过用户手工调整窗口大小以后。退出再重新登陆,没办法恢复到用户退出前手工调整过的窗口位置。

    请问这个特性需要怎么实现?

    2019年12月23日 6:12

全部回复

  • 你好,

    每次CDockablePane调整窗口大小后将窗口位置存储在注册表里,每次程序启动时,在CDockablePane的OnCreate函数里读取注册表里之前窗口位置,再调整窗口。

    Best Regards,

    Suarez Zhou


    如果您对Visual Studio 或Microsoft Azure相关产品感兴趣,请点击此链接,或扫描以下二维码注册获取相关信息。


    2019年12月23日 7:45
  • 缺省的mfc实现,我看CDockabePane里面,已经再注册表中登记了位置信息,注册表中有如下表项:

    ID, IsFloating, MRUWidth, PinState, RecentFrameAlignment, RecendRowIndex, RectRecentDocked, RectRecentFloat。

    目前这些选项都是缺省登记的,应用程序中未作处理。

    但是实际效果是,dock相关位置可以记录。但是具体到某个窗口的大小没有记住。

    2019年12月23日 9:06
  • 窗口,上中下分成三行dock,现在把中间一行调整的高度很低。关闭程序再打开,中间一行高度又回到差不多1/3的原始状态。 我再继承CDockablePane的基类里,OnCreate调用LoadState,再OnDestroy里SaveState。没起到预计的记录窗口大小的效果。 请问具体应该怎么处理和调试?
    2019年12月23日 11:55
  • 观察到一个新现象。首先情况注册表,启动程序。此时程序处于最大化或者临近最大化状态。调整窗口位置,关闭重启。可以恢复调整后的位置。

    调整整个程序大小未屏幕一半大,在调整里面dockpane。关闭重启。程序能恢复到一半大,但此时调整的dockpane不能恢复手工设置大小。因为是上中下,中间的一个dockpane,程序应该是平均分配了高度空间。

    在此情况下,再最大化。再调整中间的dockpane,位置就记不住了。除非删除注册表。

    导致整个现象的原因,是否是注册表某一个字段的值导致的?再MainFrame里还是dockpane里?有没有这方面资料可以查?

    2019年12月24日 2:31