SDIでファイル入出力

解決


塩酸  2003-06-14 02:13:33  No: 51539

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


Wanderer  2003-06-14 19:00:54  No: 51540

手っ取り早いのは、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 19:30:53  No: 51541

上記訂正

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

    CDocument::DoSave(filename, bReplace);
}


塩酸  2003-06-16 23:32:22  No: 51542

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加