パスからファイル名を取得する / INIファイルの保存ディレクトリを取得する
投稿日: 2004年10月01日 更新日: 2017年07月22日
パスからファイル名を取得する
MFCの場合、適当にやるとこんな感じ
filename = path.Mid( path.ReverseFind( '\\' ) + 1 );
もっと正確にやる場合は_splitpath(or _tsplitpath)を使う。
INIファイルの保存ディレクトリを取得する
アプリケーションと同じディレクトリにiniファイルを作成したい場合、GetCurrentDirectory()を使うとカレントディレクトリが変更されたときにまずいことになってしまう。ので、実行中のアプリケーションと同じディレクトリを取得して、そこにINIファイルを作成したい。
を参考に作ってみたのが下のコード
CString appdir;
//splitpath用
TCHAR drive[ _MAX_DRIVE ];
TCHAR dir[ _MAX_DIR ];
TCHAR filename[ _MAX_FNAME ];
TCHAR ext[ _MAX_EXT ];
TCHAR path[ MAX_PATH ];
// 実行中のプロセスのフルパス名を取得する
::GetModuleFileName(NULL, path, sizeof path / sizeof path[0] );
// フルパス名を分割する
_tsplitpath( path, drive, dir, filename, ext );
// アプリケーションディレクトリ文字列を作成
_tmakepath( appdir.GetBuffer( MAX_PATH ), drive, dir, "", "" );
appdir.ReleaseBuffer();
return appdir;
GetModuleFileName()の使い方を探していたときに見つけたページ
http://hp.vector.co.jp/authors/VA000092/win32/misc.html
正確なコードで参考になる。
http://www14.plala.or.jp/TMatTMnet/programming/tips.htm
明日から使えるTipsが現在12個。
- ファイル選択ダイアログ(複数選択)を表示
- フォルダ選択ダイアログを表示
- Esc、Enterキーで閉じなくするには
- 実行ファイル(自分自身)のフルパス取得
- ファイル・フォルダ検索関数
- ゴミ箱へ削除する関数
- ボタンを有効・無効にする
- ポップアップメニューを表示する
- UTF-8からShift_JISに変換する関数 1.ファイルのプロパティダイアログを表示 1.特定のアプリケーションが起動中かどうか調べる関数 1.ファイルサイズ数値を変換する関数
追記: http://home.att.ne.jp/banana/akatsuki/doc/mfc/mfc04/にほぼ同じコードが載ってた。
名前:宮内 はじめ
Code for Nagoya名誉代表
E2D3名古屋支部長
プログラマーです。GISやデータビズが好きです。このサイトは宮内の個人的なメモです。