ページ 11

カレントディレクトリについて

Posted: 2010年6月02日(水) 17:50
by ひよこ
私は今、簡単な音楽プレイヤーを作っているのですが、
カレントディレクトリがコマンドラインをチェックすると変わってしまうのですが、
これを解決しようとSetCurrentDirectoryを使ったら0が帰ってきて失敗しているのですが、
どこが悪いと思われますか?

//file :ファイル名 curent:ファイルパスを返すポインタ
void Set_curent(TCHAR *file,TCHAR **curent){
int i=0;
while(file!='\0'){
if(file=='.'){//拡張子だったら文字の終わりにして終了
file='\0';
break;
}
i++;
}
*curent=new TCHAR [i+1];

_tcscpy(*curent,file);
}

int argc;

LPTSTR *argv;

//コマンドラインを手に入れる
argv = CommandLineToArgvW(GetCommandLine(), &argc);

//コマンドライン引数をチェック
Check_Comand(argc,argv);

TCHAR *curent;

Set_curent(argv[0],&curent);

//メモリ解放
LocalFree(argv);

//カレントディレクトリを実行ファイルのところと同じところにする。
if(SetCurrentDirectory(curent)==0)
Error_MB(NULL,"error");

//実行ファイルのパスを表示
MessageBox(NULL,curent,curent,MB_OK);

TCHAR buf[MAX_PATH];

//カレントディレクトリが設定されたかチェック
if(GetCurrentDirectory(MAX_PATH, buf)==0)
;//まだ、失敗した時の処理を書いてません

//カレントディレクトリの表示ここがコマンドラインの場所になってしまいます。
MessageBox(NULL,buf,buf,MB_OK);

Re:カレントディレクトリについて

Posted: 2010年6月02日(水) 19:03
by toyo
curent(正確にはcurrentです)にはディレクトリじゃなくて拡張子を除いたファイル名まで入ってるんですよね
SetCurrentDirectoryにファイル名を指定したらエラーになると思いますよ

Re:カレントディレクトリについて

Posted: 2010年6月02日(水) 21:05
by ひよこ
あ、本当ですね。ファイル名まで入ってました。
ファイル名が入らないようにしたらできました。
toyoさん、ありがとうございました。