[r1883]で背景画像表示機能が追加されましたが、
実行ファイルのディレクトリが(1)のときに(2)を選択すると、(3)のような相対パスになるので、
(1)D:\down\svn\sakura\trunk2\sakura_2008\Debug_Unicode
(2)D:\down\svn\sakura\trunk2\sakura_2008\Debug_Unicode - コピー\sakura0415.jpg
(3)- コピー\sakura0415.jpg
SplitPath_FolderAndFileで分解して、終端文字まで比較するようにしました。
それだと、サブディレクトリにファイルがあるとき
D:\down\svn\sakura\trunk2\sakura_2008\Debug_Unicode\image\file.jpg
のようなときにうまく動きません。
SplitPath_FolderAndFileではなく最後に「\」を付加してそれを比較してはどうでしょうか
実行ファイルのパスor設定ファイルのパスに「\」を付加して比較するようにしました。
(1)を選択すると(2)のようになります。
(1)D:\down\svn\sakura\trunk2\sakura_2008\Debug_Unicode\image\file.jpg
(2)image\file.jpg
GetRelPath関数単体で見ると実装がずさんです。あるいは名前が不適切。
basedirの末尾にパスセパレータがない場合、返ってくる相対パスの先頭
にセパレータが残りますし、このパッチが指摘した当初の問題点をそっく
り再現もします。これでは単に一致するプリフィックスを削除する関数です。
相対パスの問題はどちらも生じませんでした。
更新しました。
DoModal_GetOpenFileName()を使用する処理で相対パスが必要なときに使いやすいようにしましたが、相対パスに省略してくれるのは背景画像のところだけでした。
同様にパスを取得する処理で相対パスに変換した方がよいのか、絶対パスのままがいいのかは判断が難しいです(対応する場合は別件になりますが)。
[r3219]でcommitしました。
Related
Commit: [r3219]