Visual C++ 6.0 です。
SDIでのファイル操作に関してですが、イベント関数を追加せずに、Documentクラスの
Serializeを使うのが、手っ取り早く何かと便利なようなのですが(履歴が残ったり)、
その場合、オープンされてくるファイルコモンダイアログを任意に属性変更したり
できるのでしょうか。具体的には、拡張子を固定させて入出力させたいのですが。
(初心者なので、見当外れなことを言っているかもしれません。。。)
手っ取り早いのは、CDocumentの仮想関数 DoSave()をCxxxDocで以下のよ
うにオーバーライドするというものです。
xxxDoc.h
virtual BOOL DoSave(LPCTSTR lpszPathName, BOOL bReplace = TRUE)
xxxDoc.cpp
BOOL CxxxDoc::DoSave(LPCTSTR lpszPathName, BOOL bReplace)
{
独自にファイルダイアログを開いて、ファイル名を取得する処理。
CDocument::DoSave(取得したファイル名, bReplace);
}
取得したファイル名に NULL を渡すと、通常のファイルダイアログが開きます。
上記訂正
xxxDoc.cpp
BOOL CxxxDoc::DoSave(LPCTSTR lpszPathName, BOOL bReplace)
{
CString filename(lpszPathName);
if(filename.IsEmpty()){
独自にファイルダイアログを開いて、filenameにファイル名を
取得する処理を記述。キャンセルならリターン。
}
CDocument::DoSave(filename, bReplace);
}
なるほど、応用がききそうですね。
ありがとうございました。