また、質問に来ました。
遊羅です。
VC++ 6.0使用です。
前回とプログラムは同じです。
ここからが質問です。
保存するテキスト名を書き、書込みボタンを押したときに、フォルダ内に同じ名前のテキストがあれば
「上書きしますか?」
とメッセージを表示し
「はい」・「いいえ」
のボタンを表示して、いいえなら何もせず元の画面に戻り、はいなら上書きをするというふうに変えたいのですが、なにを使ったら良いのかわかりません。
一応色々調べてみたのですが、恥ずかしながら調べるにしても「保存」や「上書き」以外の言葉が浮かびません・・・
以下、書込みボタンのソースです。
FILE *stream;
char file[MAX_PATH]={0};
CString str;
GetDlgItemText(IDC_EDIT2, file, MAX_PATH);
CEdit* pedit = (CEdit*)GetDlgItem(IDC_EDIT1);
GetDlgItemText(IDC_EDIT1,str);
if(strlen(file) == 0)
{
AfxMessageBox("ファイル名を入力してください。\n");
return;
}
if( (stream = fopen( file, "wb" )) != NULL )
{
while(fputs(str, stream) != NULL)
{
strcat(file,str);
}
SetDlgItemText(IDC_EDIT1, str);
fclose(stream);
}
else
{
AfxMessageBox( "fopen 関数でエラーが生じました。\n");
}
}
ヒントでも良いので、どなたかご教授を宜しくお願いします。
CFile::GetStatusとか
いろんなやり方がありそう。
たとえば書き込みopenの前に読み込みopenし、
成功(!=NULL)したら"既存"であることがわかります。
> 前回とプログラムは同じです。
てゆーときは、前回のスレへのリンクを張っておくとよいかも。
で、俺なら確認メッセージを出すのは CFileDialog に任せちゃいますね。
> 前回とプログラムは同じです。
というか不特定多数が見る掲示板ではこれはちょっとと言う気がします。
前回を見ている人が見るとは限らないわけだし。
シャノンさんが書いているみたいにせめてリンクを張るくらいは
した方が良いと思います。
分量的に長くなりすぎないならコピペでもいいわけだし。
前回を見る気がない人は参加しなくて良いと言うならそれはそれですけどね。
私もCFileDialogに任せるに一票。
コードを見る限り、エディットボックスにファイル名が入っている
ようなので、要望としてはCFileDialogではないはず。
> if(strlen(file) == 0)
> {
> AfxMessageBox("ファイル名を入力してください。\n");
> return;
> }
CFileFind find;
if (find.FindFile(file) == TRUE)
{
if (AfxMessageBox("上書きしますか", MB_ICONQUESTION | MB_YESNO) == IDNO)
{
return;
}
}
> :
> コードを見る限り、エディットボックスにファイル名が入っている
> ようなので、要望としてはCFileDialogではないはず。
エディットボックスにファイル名を入れるときに CFileDialog を使う、とゆーことで。
# どのみちこの手のチェックは気休めでしかありません。
> 保存するテキスト名を書き、書込みボタンを押したときに、
> フォルダ内に同じ名前のテキストがあれば
この質問ですよ?
書込みボタンを押したときにCFileDialog??
> > 保存するテキスト名を書き、書込みボタンを押したときに、
> > フォルダ内に同じ名前のテキストがあれば
>
> この質問ですよ?
> 書込みボタンを押したときにCFileDialog??
別に「キーボードで入力する」とは言っていないと思いますが。
詳細な仕様がわからない以上、
そこはたいして重要ではないと思います。
ソースコード上はテキストボックス使ってファイル名取得してるけど
質問だけ見たらCFileDialogそのものですよねー
CFileDialogを知らず、メモ帳やらofficeやらと同じように
上書き確認の機能が欲しかっただけなんじゃないかしら。
2週間前の質問な上、
質問者本人不在につき本当は何がしたかったのかわかりませんが。
ツイート | ![]() |