Сохранить настройки приложения MFC CArchive

У меня есть несколько настроек в приложении, которые я хочу сохранить при их изменении. есть флажок:

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;
}

но все время, когда те или иные настройки меняются, программа перезаписывает файл.

пс. Я не хочу использовать реестр (по причине переносимости)

мой вопрос, как я могу написать и прочитать настройки в порядке сериализации?

какие доступны альтернативные способы сохранения настроек программы? (пожалуйста, с примером)

1 ответ

Решение

Вам нужно записывать все настройки в архив каждый раз, когда что-то меняется. Соответственно, загружайте все настройки из файла архива при запуске программы.

Другие вопросы по тегам