gpt4 book ai didi

c++ - 如何禁用 MFC 将工作区设置写入注册表?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:27:00 24 4
gpt4 key购买 nike

默认情况下,Visual Studio 2010 中的基本 MFC C++ 项目会将其所有工作区设置存储在用户可配置的键名下的 HKCU 注册表配置单元中。这包括上一个窗口大小/位置、功能区设置、状态栏等。

如何才能完全禁用此功能以便完全不写入注册表?

我尝试不设置 SetRegistryKey(),这让我在第一次读/写注册表时从框架中得到调试断言。 SetRegistryKey((LPCTSTR)NULL) 给出了相同的结果。 SetRegistryBase() 好像没有效果。 CWinApp/CWinAppEx 中的其他方法似乎都没有帮助。

最佳答案

编辑:我原来的回答是错误的。我已经编辑了答案。


您可以告诉 MFC 将设置存储在 .ini 文件中而不是注册表中。参见 this previous answer . (更新:这仅在您不使用 CWinAppEx 时有效。)

如果您想阻止 MFC 保存菜单和工具栏的部分 全部 状态,请将以下内容添加到您应用的构造函数中:

m_bSaveState = FALSE;

只有当您的应用派生自 CWinAppEx 时,才会定义 m_bSaveState 成员。

或者,您可以覆盖 CWinAppEx::SaveStateCWinAppEx::LoadState


要删除 WindowPlacement 注册表项,请覆盖 CWinAppEx::StoreWindowPlacement

您可能仍会写入其他注册表项。完整的解决方案将涉及子类化 CSettingsStore,然后在您的应用程序中调用 CSettingsStoreSP::SetRuntimeClass。 (See this 了解更多信息。)这相当困难,因为您必须在自定义 CSettingsStore 类中重写一大堆虚函数。

关于c++ - 如何禁用 MFC 将工作区设置写入注册表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4025820/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com