默认情况下,Visual Studio 2010中的基本MFC C++项目将使用用户可配置的键名将所有工作区设置存储在HKCU注册表配置单元中.这包括最后一个窗口大小/位置,功能区设置,状态栏等.
如何完全禁用此功能,以便根本不写入注册表?
我尝试不设置SetRegistryKey(),这给了我一个调试断言从框架第一次读/写到注册表. SetRegistryKey((LPCTSTR)NULL)给出了相同的结果. SetRegistryBase()似乎没有效果.在没有其他方法CWinApp/ CWinAppEx没什么帮助.
编辑:我原来的答案是错误的。我已经编辑了答案。
您可以告诉 MFC 将设置存储在(更新:这仅在您不使用时才有效.ini文件而不是注册表中。请参阅此先前的答案。CWinAppEx。)
如果你想防止MFC从节约一些菜单和工具栏的状态完全,以下内容添加到您的应用程序的构造函数:
m_bSaveState = FALSE;
Run Code Online (Sandbox Code Playgroud)
将m_bSaveState您的应用是否源自成员只被定义CWinAppEx。
或者,您可以覆盖CWinAppEx::SaveState和CWinAppEx::LoadState。
要消除WindowPlacement注册表项,请覆盖CWinAppEx::StoreWindowPlacement.
您可能仍会写入其他注册表项。一个完整的解决方案将涉及子类化CSettingsStore,然后在您的应用程序中调用CSettingsStoreSP::SetRuntimeClass. (有关更多信息,请参阅this。)这相当困难,因为您必须在自定义CSettingsStore类中覆盖一大堆虚函数。
| 归档时间: |
|
| 查看次数: |
5582 次 |
| 最近记录: |