将文件设置保存在ini而不是注册表中

nXq*_*Xqd 2 mfc

一旦我在myApp :: InitInstance()中创建我的第一个应用程序,我就是MFC的新手.我有

SetRegistryKey(_T("Local AppWizard-Generated Applications"));
Run Code Online (Sandbox Code Playgroud)

我可以删除它并将设置保存到我自己的ini构造中吗?

Nat*_*ate 7

编辑:进一步测试后,如果您的应用程序类派生自以下,则下面的解决方案不起作用CWinAppEx!如果您的应用程序直接来自,它确实有效CWinApp.


要将值存储在.ini文件而不是注册表中:

  1. 省略号召SetRegistryKey.
  2. 在您的应用类中,设置m_pszProfileName.ini文件的完整路径.必须使用分配文件名字符串malloc,因为框架将free在您的应用程序关闭时调用它.首先free是现有值,然后分配新字符串:

    free((void*)m_pszProfileName);
    m_pszProfileName = ::_tcsdup(_T("C:\\somedir\\myini.ini"));

  3. 呼叫CWinApp::GetProfileInt,CWinApp::WriteProfileInt和往常一样的功能.

我强烈建议使用APPDATA下的路径来存储您的.ini文件.

  • 我发现如果您的应用程序类是`CWinAppEx` 的子类,则此解决方案不起作用。如果您的应用程序是`CWinApp` 的直接子类,它仍然有效。我使用基于“CWinApp”的基于对话框的应用程序对其进行了测试,这就是我没有发现错误的原因。 (2认同)