0

変更時に保存したいアプリの魔女にいくつかの設定があります。チェックボックスがあります:

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

ただし、いずれかの設定が変更されるたびに、プログラムはファイルを上書きします。

ps。レジストリを使用したくない(原因が移植可能であるため)

私の質問は、シリアル化の方法で設定を読み書きする方法です。

プログラム設定の状態を保存する代替方法は何ですか? (例をお願いします)

4

1 に答える 1

1

何かが変更されたときは、毎回すべての設定をアーカイブに書き込む必要があります。したがって、プログラムの起動時に、アーカイブファイルからすべての設定をロードします。

于 2013-01-30T11:06:57.007 に答える