Last Updated 2005/09/13
Visual C++ MFC レジストリ
MFCでのレジストリ操作
2005/09/13

標準の MFC アプリケーションであれば CWinApp::InitInstance() にてレジストリの名称登録を行う.

BOOL CMyApp::InitInstance()
{
    SetRegistryKey( "company name" );
}

これでレジストリの登録場所は
HKEY_CURRENT_USER\Software\<company name>\<application name>
となる.
<application name> は EXE 名が自動に設定される.

レジストリの操作は

読込
    CMyApp* pApp =(CMyApp*)AfxGetApp();
    INT i = pApp->GetProfileInt( "MY", "data", 1);

書込
    CFooApp* pApp =(CFooApp*)AfxGetApp();
    pApp->WriteProfileInt( "MY", "data", 1);

にて行える.


SetRegistryKey() を使用すれば,CWinApp::GetProfile*,CWinApp::WriteProfile* にて扱えるのでキーを指定する必要がない.
整数,文字列,バイナリが読み書き可能である.
(afxwin.h のヘッダを参照)

GetProfileBinary() にて得られるバイナリの領域は new BYTE[] で確保されるもののようであるから,使用したら delete しなければならない.

逆に SetRegistryKey() を使用すると CWinApp::m_pszProfileName の設定は無視されてレジストリが格納先になってしまう.

GetProfile 系のメンバ関数を使用していれば INI ファイルに保存しておいたものでも,のちにレジストリがよい場合には SetRegistryKey() の1行を追加するだけでレジストリに格納できる.


参照
他アプリのレジストリ操作
INIファイルを実行ファイルディレクトリに作成する
前後のTips
MFCでのレジストリ操作

DSS ProgrammingTipsCGI Ver1.02