MIYUKIと申します。お久しぶりですぅ!
バイナリファイルからテキストファイルへの変換ツールを作ってます。
環境はWINDOWS2000、VC++6,0、MFCのダイアログベース。
バイナリ→テキストへの変換を無事終了して、最後に
InFile.Close();
OutFile.Close();
}
if(Ans == IDYES){ //上の処理で「処理後自動的に開きますか?」
//というダイアログ表示。そのアンサー
ShellExecute(NULL,open, filetxt, NULL, NULL, SW_SHOWNORMAL);
}
・
・
という処理を加えて自動的にテキストファイルを開けるようにしてます。
このテキストファイルを開いたまま(表示したまま)、また同じファイル名
を選んで処理出来てしまうのですが、上書きは出来ない(テキスト
を開いていなければ上書きされます。)で、テキストが増える一方・・・。
指定したファイルが「只今開かれてます」っていうような関数って
あるのでしょうか? CFileException?ううぅん・・分らないのねぇ。。
恐らくファイルOPEN時にそのようなチェックが必要だと思うので、
ソースをちょっとだけ。
if(!OutFile.Open(filename,CFile::modeWrite | CFile::modeCreate)){
MessageBox(出力ファイルが作成出来ませんでした,Error,MB_ICONSTOP | MB_OK);
//バイナリファイルを選ばなかった場合などに表示します。
InFile.Close();
return;
}
どうかご教授の程、宜しくお願いします!!
僕はCFileはほとんど使わないんであれなんですが
if(!OutFile.Open(filename,CFile::modeWrite | CFile::modeCreate | CFile::shareDenyRead)){
こんな感じで良いのかなと思います
ヘルプのCFile::CFileの項目あたりを見て
CFile::share~というアクセスモードを確認するのが良いと思います