如何保存MFC应用程序的布局设置

How to save layout settings of MFC application?

本文关键字:应用程序 布局 设置 MFC 何保存 保存      更新时间:2023-10-16

我知道有些功能可以轻松编写Windows注册表,但是我发现在使用向导创建的新的MFC项目中,一些信息(例如拆分栏位置,控制功能的可见性)被存储自动(或者至少我没有发现cwinapp ::在项目中写*电话)。由于我也有没有这种行为的较旧的项目,因此我需要弄清楚如何在没有项目向导的帮助的情况下做出这一点。有人会知道这是如何工作的吗?

MFC控制状态保存魔术发生在'新的'MFC功能包中,特别是在SaveState方法中,例如CMFCToolbar :: Savestate。

为了利用此优势,您需要升级工具栏和菜单以使用较新的控件,并将您的应用程序升级到从Cwinappex继承。我建议您使用基于MFC向导的新应用程序作为如何升级旧MFC应用的指南。

大多数信息都保存在CPANE :: SAVESTATE()中,因此,如果要保存某些组件的状态,则需要使用从CPANE得出的类。(有关更多信息,这里是类层次结构)。

保存窗口状态的过程是通过cframeimpl :: OnClosingMainFrame()启动的。此功能依次调用cwinappex :: savestate(),该功能保存了某些应用程序设置,然后拨打了cmfctoolbar的所有实例(它们将自己添加到CMFCToolbars的全局列表中,请访问otCreate)。以类似的方式保存了所有可码头窗格,但列表属于您的主框架。然后保存主框架的potitioin和大小。CViews和Cframewnds不太喜欢,因为我发现并尝试过的是,保存的唯一信息是可见性。

我使用了那个loooong。如果我正确提醒它,则应在调用基类方法之前将想要的信息保存在覆盖的CWinApp::ExitInstance()中,然后将其加载到CWinApp::InitInstance中。请确保允许默认值,因为在第一次运行时,不会加载,不要忘记致电(或复制)基类。