記録ファイル(.INI)を使う

VC++ の GetPrivateProfileString() で記録ファイル(.INI)のデータを読み出します。
Win32 からはレジストリを使うように奨励されていて、互換性を保つために残されているAPIです。
個人的には使いやすいのと、レジストリを汚したくないので INI File を使うことが良くあります。 (^_^;)

前田稔(Maeda Minoru)の超初心者のプログラム入門

プロジェクトの設定

  1. ページ先頭の画像を参考にして DialogBox を作成して下さい。
    ID キャプション
    IDC_EDIT1 string_data
    IDC_EDIT2 int_data
    IDC_GET GET
    IDC_WRITE WRITE
    IDCANCEL 終了
  2. szStr[100] は文字列データを格納する領域です。
    value は INT 型データを格納する領域です。
    wk[24] は編集用の作業領域です。
        char        szStr[100];
        int         value;
        char        wk[24];
        
  3. IDC_GET: で Ini File に記録されているデータを取得して Edit Box に表示します。
    Test.ini が記録した値が格納されているファイルの名前です。
    TestProg が値を記録したアプリケーションの名前です。
    strint_data が記録されたデータの名前で、"XYZ" が見つからなかったときの規定値です。
    szStr が値を読み出す領域のポインタで 100 が最大長です。
    GetPrivateProfileInt() は int 型の場合です。
            case IDC_GET:
                GetPrivateProfileString("TestProg","strint_data","XYZ",szStr,100,"Test.ini");
                SetDlgItemText(hDlg,IDC_EDIT1,szStr);
                value= GetPrivateProfileInt("TestProg","int_data",123,"Test.ini");
                wsprintf(wk,"%d",value);
                SetDlgItemText(hDlg,IDC_EDIT2,wk);
                break;
        
  4. IDC_WRITE: で Edit Box のデータを取得して Ini File に記録します。
    Ini File の記録は WritePrivateProfileString() を使います。
    パラメータは GetPrivateProfileString() と比べれば、すぐ解かるでしょう。
            case IDC_WRITE:
                GetDlgItemText(hDlg,IDC_EDIT1,szStr,100);
                WritePrivateProfileString("TestProg","strint_data",szStr,"Test.ini");
                value= GetDlgItemInt(hDlg,IDC_EDIT2,NULL,FALSE);
                wsprintf(wk,"%d",value);
                WritePrivateProfileString("TestProg","int_data",wk,"Test.ini");
                SetDlgItemText(hDlg,IDC_EDIT1,"");
                SetDlgItemText(hDlg,IDC_EDIT2,"");
                return TRUE;
        
  5. プログラムを起動して GET Button をクリックするとページ先頭の画像が表示されます。
  6. string_data と int_data に適当な値をタイプして、WRITE Button をクリックするとファイルに保存されます。
    EDIT BOX がクリアされるので GET Button をクリックして保存された値を確認して下さい。

【演習】

  1. プログラムを完成させて下さい。
  2. string_data に "ABCDEFG" を int_data に 54321 をタイプして WRITE Button をクリックして下さい。
  3. C:\WINDOWS のフォルダーに "Test.ini" ファイルが作成されるので、エディッタなどで内容を確認して下さい。
    [TestProg]
    strint_data=ABCDEFG
    int_data=54321
    
  4. パソコンを使っていると、いつの間にか Windows のフォルダーに .INI ファイルが山のように溜まります。
    放っておいても支障は無いのですが、不要になったファイルは削除したいものです。
    但し、.INI を削除するとアプリケーションによっては動かなくなるので要注意です。

超初心者のプログラム入門(Win32API C++)