外部ファイルの読み込み・書き込みを行うクラスとして「CPFileCtrl」があります。
また、画像ファイルを読み込むクラスメソッドとして「CPImage::GetImageSize」「CPImage::LoadImage」があります。
これらのクラスでは、ファイルの位置指定時に、起動したアプリケーション(Shadeなど)を起点とした相対パスで指定します。
例えば、Shadeのフルパスを「C:\Program Files\Shade 6\advance\Shade 6 advance.exe」とした場合に、[plugins]フォルダ内のファイル[test.dat]を読み込む例を示します。
CPFileCtrl f;
char szBuff[256];
char szPath[256];
//Shadeのパスを起点としたときの絶対パスを取得
CPartsSI_GetFullPath("plugins/test.dat",szPath,255);
//ファイルを読み込み専用で開く
if(f.Open(szPath)){
//ファイルよりデータを読み込み
f.Read(szBuff,255);
//ファイルを閉じる
f.Close();
}
この例では、「C-Parts - Shadeブリッジ」の「CPartsSI_GetFullPath」により、Shadeのパスと指定の相対パスを組み合わせて、
絶対パスを取得します。
このときのszPathは「C:/Program Files/Shade 6/advance/plugins/test.dat」が入ります(Macintoshでは「plugins/test.dat」のままです)。
フォルダのセパレータが「/」となっているのは、WindowsでもMacintoshでも同じです。
C-Parts内部では、フォルダのセパレータの「/」を各OS依存の型に自動変換します(依存性の吸収のため)。
ここで取得できたszPathを「CPFileCtrl::Open」に渡しています。
Macintoshの場合は、カレントフォルダが移動することはないため、「CPartsSI_GetFullPath」の処理では絶対パスを求める必要がありません。
また、絶対パスは意識する必要はありません。