0

为了保存列顺序,我正在考虑使用CSettingsStore该类在注册表中保存和恢复整数数组(我将使用CListCtrl::GetColumnOrderArray()CListCtrl::SetColumnOrderArray()生成和设置的数组)。但我不知道这是否现实可行,或者使用什么注册表数据类型(DWORD?将 s 填充int到字符串数组中并使用多字符串?)。此外,CSettingsStore需要一个字符串路径来打开密钥,同时GetAppRegistryKey()返回一个HKEY,所以我不确定如何CSettingsStore与我的应用程序一起使用。

我有 3 个问题。

  1. 这种方法对于加载和保存列信息是否可行?还是有一个明显更简单的解决方案?
  2. 我应该使用哪些数据类型将列顺序数组存储在注册表中?
  3. 如何将HKEY值转换为CString?还是我应该只查找我的应用程序的注册表项并对其进行硬编码?
4

1 回答 1

0

我的建议是将列数和索引值格式化为用逗号分隔的字符串(例如5, 1, 3, 4, 2, 0,第一个数字是列数)并将其存储在注册表中REG_SZ,就像

AfxGetApp()->WriteProfileString(_T("Settings\\<ListControlName>"), _T("ColumnOrder"), sFormattedString);

GetProfileString()您可以使用CStringT::Tokenize()或使用直接 API函数加载字符串strtok_s()来检索值。

我用"Settings\\<ListControlName>"在你需要为每个 ListControl 存储更多值的情况下,例如排序顺序。否则,您可以只调用一个注册表部分"Settings\\ColumnOrder"并将<ListControlName>其用作值名称。

于 2013-08-21T11:34:39.673 回答