OnFileNew の動作について教えて下さい。 – プログラミング – Home

OnFileNew の動作について教え...
 
通知
すべてクリア

[解決済] OnFileNew の動作について教えて下さい。


平井
 平井
(@平井)
ゲスト
結合: 23年前
投稿: 48
Topic starter  

VisualC++ の質問です。

CListViewクラスを使っています。
<新規作成>をメニューから選択すると、デフォルトで CWinApp::OnFileNew が
呼び出されるかと思います。マニュアルには「OnFileNewメンバ関数では新しい
文書と、該当するフレームおよびビュークラスを作成します。」とあるのですが、
私のアプリでは Docクラス 及び Viewクラスのデータは生きたままです。
OnFileNewは一体何をやっているのでしょうか?

当面の目的は、<新規作成>を選択した時にDOCクラスを初期化することです。
次のようにオーバーライドしようと思っているのですが、CWinAppクラスからDoc
クラスへのポインタを得るにはどうすればよいのでしょうか?

CMyApp::OnFileNew()
{
Docクラス初期化処理

CWinApp::OnFileNew();
}

また、このようなやり方で正しいのでしょうか?


引用未解決
トピックタグ
kazuma
 kazuma
(@kazuma)
ゲスト
結合: 23年前
投稿: 217
 

> マニュアルには「OnFileNewメンバ関数では新しい
> 文書と、該当するフレームおよびビュークラスを作成します。」とあるのですが、
> 私のアプリでは Docクラス 及び Viewクラスのデータは生きたままです。

SDI だとドキュメントの中身だけ消して使いまわしているみたいです。

> OnFileNewは一体何をやっているのでしょうか?

せっかくソースがついているんですから読んでみてください。

> 当面の目的は、<新規作成>を選択した時にDOCクラスを初期化することです。

ドキュメントの初期化なら CDocument::OnNewDocument でやるべきです。
「<新規作成>を選択した時」に間接的にここが呼ばれます。


返信引用
平井
 平井
(@平井)
ゲスト
結合: 23年前
投稿: 48
Topic starter  

>ドキュメントの初期化なら CDocument::OnNewDocument でやるべきです。
>「<新規作成>を選択した時」に間接的にここが呼ばれます。

うまくいきました。SDIアプリケーションには始めからOnNewDocument()
メンバ関数がインプリメントされていたようで、

// TODO: この位置に再初期化処理を追加してください。
// (SDI ドキュメントはこのドキュメントを再利用します。)

というコメントまで書いてありました。
見落としていたようです。

kazuma さんご回答ありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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