SaveBarState,LoadBarStateを使って、ツールバーの情報を設定・保持しています。
この設定情報ファイルは、XPの場合はC:Windowsフォルダ内に作成されますが、これを
実行ファイルと同一フォルダに作成するようにしたいです。
それにはどうしたらよいでしょうか?
開発環境はVS2003、OSはXPです。
https://msdn.microsoft.com/ja-jp/library/8d16dk62.aspx
ここに書いてありますね。
レジストリーを使えばいいのではないでしょうか?
ありがとうございます。
「lpszProfileName
状態情報が格納されている Windows レジストリに初期化 (INI) のファイルまたはキーの
セクションの名前。」
の部分ですね。
日本語がおかしくて意味が。。。(@_@;)
実際は「IDR_TOOLBAR」という文字を引数として渡しています。
が、プロジェクト全体をGrepしてもLoadBarStateとSaveBarStateでしかヒットしないんで
すよね…。
レジストリに格納されてるのかなぁと思ってregeditを起動してみたけど、そこから先が
わからず…。
もう少し詳しく教えてください。
う--ん、
https://msdn.microsoft.com/ja-jp/library/cc429340.aspx
この中の、「Reg」がつくのがレジストリ用の関数です。
http://www.kab-studio.biz/Programing/Codian/MFCTips/07.htmlhttps://msdn.microsof
t.com/ja-jp/library/cc776231(v=ws.10).aspx
ここらへんも参考に
http://www.kab-studio.biz/Programing/Codian/MFCTips/07.html
https://msdn.microsoft.com/ja-jp/library/cc776231(v=ws.10).aspx
ここらへんも参考に
レジストリを使うようにしたほうが今後役に立つと思います。
MFC のソースを見てみると、
CFrameWnd::SaveBarState()
→CDockState::SaveState()
→CControlBarInfo::SaveState()
と来て、CWinApp::WriteProfileString() や WriteProfileInt() が呼び出されるようで
す。
で、それらの「書き込み(読み込み)先」を変更するには、CWinApp::m_pszProfileName を
「実行ファイルと同一フォルダのINIファイル」にセットしてやればいいはずです。
CWinApp::m_pszProfileName
https://msdn.microsoft.com/ja-jp/library/xykfyy20.aspx
CFooApp::InitInstance() あたりで、
・GetModuleFileName() で自分のパス名を取得する
・そのフォルダの「foo.ini」
を設定してやればいいのではないか、と。
やり方は、↑のURL参照。
>Kさん
m_pszProfileNameで検索したら対応法がわかりました。ありがとうございました。