CWinApp::OnFileNewでパスを変更したい – プログラミング – Home

通知
すべてクリア

[解決済] CWinApp::OnFileNewでパスを変更したい


ちゃっぴー
 ちゃっぴー
(@ちゃっぴー)
ゲスト
結合: 22年前
投稿: 20
Topic starter  

エディタを作成しています。
Aというファイルを読み込んでいる時、
表面上、Bファイルに変更をしているように見せたいのです。

編集をして新規作成が押された時、「Aを上書きしますか?」という
メッセージがでますが、
これを「Bを上書きしますか?」というようにし、OKが出されたら
Bに保存するという流れです。

保存や、×ボタンはSetPathName()を使用して
パスを変更できたのですが・・・

MFCのソースを見てCWinApp::OnFileNew()でメッセージを出しているのはわかりました。
この前にパスを変更したいのですが、どのようにするかが分かりません。
AppクラスでCDocument::SetPathNameのような動作をしたいのです。

ソースはこんな感じですが、できるでしょうか?

void CXXXApp::OnFileNew()
{
//ある条件の時、
if(flg == 1){
//ドキュメントのパス名を変えたい
}
CWinApp::OnFileNew();
}

環境はVC6.0、Win2000、MFCです。


引用未解決
トピックタグ
Daisuke
 Daisuke
(@Daisuke)
ゲスト
結合: 22年前
投稿: 13
 

何をされたいのかよくわかりませんが、それは
SetModifiedFlag(TRUE)とすることで、呼ばれます。

IsModified()でTRUEかどうかを確認できますので、
それを利用し、もともとのメッセージを出したくないのでしたら、
SetModifiedFlag(FALSE)してしまえばいいです。


返信引用
ちゃっぴー
 ちゃっぴー
(@ちゃっぴー)
ゲスト
結合: 22年前
投稿: 20
Topic starter  

Daisukeさんお返事ありがとうございます。

MFCのソースを見たのですが、
CWinApp::OnFileNew()の中を追っていくと、SaveModified()を呼んで
その中でメッセージボックスを呼んでいます。

ですのでその前に(CWinApp::OnFileNew()の前)に、ドキュメントの
パス名を変えることはできないのでしょうか?

やりたいことは、

1.読み込み時にファイルの判別
  (Aが読み込まれたらflgを1にする)
  CMainFrame::OnUpdateFrameTitle()でタイトルはBに見せる。

2.編集され「新規作成」がされたら、「Aへの変更を保存しますか?」
  ではなく、「Bへの変更を保存しますか?」とする。
  OKがされたらBに保存。

ですのでSetModifiedFlag(FALSE)にしたいのではなく、
ドキュメントのパス名を変更したいのです。

かなり変な処理なのでわかりにくいと思います。
こんな説明で分かりますでしょうか?


返信引用
ちゃっぴー
 ちゃっぴー
(@ちゃっぴー)
ゲスト
結合: 22年前
投稿: 20
Topic starter  

答えは自分で書いてたようです。

>CWinApp::OnFileNew()の中を追っていくと、SaveModified()を呼んで

SaveModified()をオーバーライドして、そこで判別して
SetPathName()で解決できそうです。

最近ようやくオーバーライドが使えるようになりました。
おさがわせしました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました