Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何保存MFC应用程序的布局设置?_C++_Windows_Mfc - Fatal编程技术网

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

C++ 如何保存MFC应用程序的布局设置?,c++,windows,mfc,C++,Windows,Mfc,我知道有些函数可以轻松地编写windows注册表,但我发现在使用向导创建的新MFC项目中,一些信息(如分割条位置、控件可见性)会自动存储(或者至少我在项目中没有发现CWinApp::write*调用)。由于我也有没有这种行为的老项目,我需要弄清楚如何在没有项目向导的帮助下实现这一点。有谁能知道这是怎么回事吗?我很久以前就用过那条龙。如果我正确地提醒了它,那么在调用基类方法之前,应该将需要的信息保存在重写的CWinApp::ExitInstance()中,然后将它们加载到CWinApp::Init

我知道有些函数可以轻松地编写windows注册表,但我发现在使用向导创建的新MFC项目中,一些信息(如分割条位置、控件可见性)会自动存储(或者至少我在项目中没有发现CWinApp::write*调用)。由于我也有没有这种行为的老项目,我需要弄清楚如何在没有项目向导的帮助下实现这一点。有谁能知道这是怎么回事吗?

我很久以前就用过那条龙。如果我正确地提醒了它,那么在调用基类方法之前,应该将需要的信息保存在重写的
CWinApp::ExitInstance()
中,然后将它们加载到
CWinApp::InitInstance
中。请确保允许使用默认值,因为在第一次运行时,将不会加载任何内容,并且不要忘记调用(或复制)基类。

MFC控件状态保存魔术发生在“新建”中,特别是在
SaveState
方法中

因此,要利用这一点,您需要升级工具栏和菜单以使用更新的控件,并升级应用程序以从中继承。我建议您使用新的基于MFC向导的应用程序作为升级旧MFC应用程序的指南

大部分信息保存在CPane::SaveState()中,因此,如果希望保存某些组件的状态,则需要使用从CPane派生的类。(有关更多信息,请参阅类层次结构)

保存窗口状态的过程通过CFrameImpl::OnClosingMainFrame()启动。此函数依次调用CWinAppEx::SaveState(),该函数保存一些应用程序设置,然后保存CMFCToolBar的所有实例(它们在调用OnCreate时将自己添加到CMFCToolBar的全局列表中)。以类似的方式保存所有可固定窗格,但列表属于主框架。然后保存主框架的位置和大小。
CViews和CFrameWnds不太受欢迎,因为我发现并尝试过,保存的唯一信息是可见性。

Hmmm你说得对。马的王国。。。这将能够为我阅读MFC源代码。如果你想要一个程序来阅读/理解MFC源代码,请尝试代理Ransack之类的方法。不,我只是很懒,我最后已经阅读了,但谢谢:)我可以编辑你的答案,添加一些我找到的信息并将其标记为接受吗?