У меня есть несколько настроек в приложении, которые я хочу сохранить при их изменении.
есть флажок:
void CL2HamsterDlg::OnBnClickedCheckAutoselect()
{
CFile theFile( pFileName1,CFile::modeWrite );
CArchive ar(&theFile, CArchive::store);
if(c_Acheck.GetCheck()==BST_UNCHECKED)
a = 0;
else
a = 1;
ar << a;
ar.Close();
theFile.Close();
}
и поле со списком с кнопкой сохранения (при нажатии сохранить сохраняет содержимое со списком):
void CL2HamsterDlg::OnClickedButtonLoad()
{
Value.GetWindowText(str);
CFile theFile( pFileName1,CFile::modeWrite );
CArchive ar(&theFile, CArchive::store);
ar << Savename;
ar.Close();
theFile.Close();
}
При инициализации приложение должно загрузить эти настройки и установить их:
BOOL CL2HamsterDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
pFileName1 = "settings.dat";
theFile.Open( pFileName1,CFile::modeRead );
CArchive ar(&theFile, CArchive::load);
ar >> a;
ar.Close();
theFile.Close();
if(a == 1)
c_Acheck.SetCheck(BST_CHECKED);
return TRUE;
}
но все время, когда те или иные настройки меняются, программа перезаписывает файл.
пс. Я не хочу использовать реестр (по причине переносимости)
мой вопрос, как я могу писать и читать настройки в порядке сериализации?
какие доступны альтернативные способы сохранения настроек программы? (пожалуйста, с примером)
Вам нужно записывать все настройки в архив каждый раз, когда что-то меняется. Соответственно, загружайте все настройки из файла архива при запуске программы.
Других решений пока нет …