为了保存列顺序,我考虑使用CSettingsStore
类来保存和恢复注册表中的整数数组(我将使用CListCtrl::GetColumnOrderArray()
和CListCtrl::SetColumnOrderArray()
的数组生成和设置)。但是我不知道这是否真实可行,或者使用什么注册表数据类型(DWORD
?将int
s装入字符串数组并使用多字符串?)。此外,CSettingsStore
需要字符串路径才能打开密钥,而GetAppRegistryKey()
会返回 HKEY
,所以我不确定如何在我的应用中使用CSettingsStore
。
我有3个问题。
HKEY
值转换为CString
?或者我应该只查看我的应用程序的注册表项并对其进行硬编码?答案 0 :(得分:0)
我的建议是将列数和索引值格式化为逗号分隔的字符串(如5, 1, 3, 4, 2, 0
,第一个数字是列数)并将其作为{{1}存储在注册表中用类似
REG_SZ
您可以使用AfxGetApp()->WriteProfileString(_T("Settings\\<ListControlName>"), _T("ColumnOrder"), sFormattedString);
加载字符串,并使用GetProfileString()
或直接的API CStringT::Tokenize()
函数来检索值。
我使用strtok_s()
以防你需要为每个ListControl存储更多值,例如sort-order。否则,您可能只有一个名为"Settings\\<ListControlName>"
的注册表部分,并使用"Settings\\ColumnOrder"
作为值名称。