c++ - 使用 WinAPI 的应用程序设置

标签 c++ winapi

在 WinAPI 中是否有任何标准方法来处理应用程序设置?我目前正在做的是:

if(!ReadKey(some_setting))
    WriteKey(some_setting, some_setting_setting_default_value)

初始化设置对话框时。然后我将小部件状态设置为从注册表中读取的相应值。问题是,如果应用程序是第一次运行,则无法按照上述代码模式读取默认设置。还需要一个 ReadKey() 来将刚刚写入的默认设置读入我程序中的设置变量。这对我来说看起来有点笨拙。所以问题基本上是:

  • 是否有任何标准方法可以在 Win32 中使用设置?
  • 而且,最重要的是,有没有什么方法可以在安装过程中设置默认应用程序设置,以便有代码来设置默认设置? (我想这是首选方法,因为这样您就可以修改默认应用程序设置而无需重建它)

同样,这应该是纯 Win32,不允许使用 MFC。

为什么这是作业?这是关于做事是否有既定惯例的问题,而不是要求为我做我的工作。现在我最好从那里删除“大学项目”短语。

最佳答案

您可以避免将硬编码的默认值写入注册表,并将注册表留空,除非它包含非默认值:

string ReadRegistry(
  const string& some_setting,
  const string& some_setting_default_value
  )
{
  //try to read user-specified setting from registry
  string rc;
  if (ReadKey(some_setting, rc))
  {
    return rc;
  }
  //else return hard-coded default value, not from registry
  return some_setting_default_value;
}

或者,您可以在安装程序时(在程序运行之前和尝试从注册表中读取之前)将所有默认值写入注册表。

Is there any standard way to work with settings in Win32?

没有。

Is there any way to set up default application settings during installation

是的,安装程序可以写入注册表。

关于c++ - 使用 WinAPI 的应用程序设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3076343/

相关文章:

c++ - Boost.MultiIndex 数据结构中的通配符搜索?

windows - winapi 检索所有驱动器的最大配置页面文件大小

c++ - Windows 句柄的 Getter

c++ - 如何在win32中获取鼠标光标的RGB字节数组?

windows - 如何手动读/写.exe机器代码?

c++ - 运营商_surrogate_func : no matching overload found and 2 other errors

c++ - 我的代码 : error: expected primary-expression before ‘.’ token 出错

C++ std::map 在 "*"上失败?

c++ - C++中的 bool 运算符

winapi - SHGetFileInfo() 返回错误的 HICON