SDIでファイル入出力

解決


塩酸  2003-06-13 17:13:33  No: 51539  IP: [192.*.*.*]

Visual C++ 6.0 です。
SDIでのファイル操作に関してですが、イベント関数を追加せずに、Documentクラスの
Serializeを使うのが、手っ取り早く何かと便利なようなのですが(履歴が残ったり)、
その場合、オープンされてくるファイルコモンダイアログを任意に属性変更したり
できるのでしょうか。具体的には、拡張子を固定させて入出力させたいのですが。
(初心者なので、見当外れなことを言っているかもしれません。。。)

編集 削除
Wanderer  2003-06-14 10:00:54  No: 51540  IP: [192.*.*.*]

手っ取り早いのは、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 を渡すと、通常のファイルダイアログが開きます。

編集 削除
Wanderer  2003-06-14 10:30:53  No: 51541  IP: [192.*.*.*]

上記訂正

xxxDoc.cpp
BOOL CxxxDoc::DoSave(LPCTSTR lpszPathName, BOOL bReplace)
{
    CString filename(lpszPathName);
    if(filename.IsEmpty()){
        独自にファイルダイアログを開いて、filenameにファイル名を
        取得する処理を記述。キャンセルならリターン。
    }

    CDocument::DoSave(filename, bReplace);
}

編集 削除
塩酸  2003-06-16 14:32:22  No: 51542  IP: [192.*.*.*]

なるほど、応用がききそうですね。
ありがとうございました。

編集 削除