INIファイルに情報を保存する

Visual C++ で作成したMFCアプリケーションでは、アプリケーションの情報などを保存する時に、”WriteProfileInt”や”WriteProfileString”を使うとデフォルトでレジストリに保存されます。 レジストリではなくiniファイルに保存するためには、CWinApp派生クラスのInitInstanceにある”SetRegistryKey”のある行をコメントアウトする必要があります。

// TODO: この文字列を、会社名または組織名などの、 
// 適切な文字列に変更してください。 
//SetRegistryKey(_T("アプリケーション ウィザードで生成されたローカル アプリケーション")); 
LoadStdProfileSettings(4);  // 標準の INI ファイルのオプションをロードします (MRU を含む)

しかしこのままでは、WINDOWSフォルダ内にiniファイルが保存されてしまします。iniファイルの保存する場所を指定するには、CWinApp派生クラスのInitInstanceにコードを追加します。

#include "shlwapi.h"
 
if(m_pszProfileName)
{
    TCHAR szPath[MAX_PATH];
 
    ::GetModuleFileName(NULL, szPath, MAX_PATH);  // 実行ファイルのパスを取得
    ::PathRenameExtension(szPath, _T(".ini"));  // 拡張子をiniへ変更
    free ((void*)m_pszProfileName);  // メモリの解放
    m_pszProfileName = _tcsdup(szPath);  // 新しいパスを設定 
}

上記の例では、実行ファイルと同じ場所にiniファイルを作成します。