CDocManager のカスタマイズ – プログラミング – Home

CDocManager のカスタマイズ
 
通知
すべてクリア

CDocManager のカスタマイズ


aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
Topic starter  

VC++ 7.1 / MFC です。

毎度お世話になっております。よろしくお願いします。

MFC でファイルオープン/セーブ周りのことをカスタマイズしようとすると、
CDocManager を継承してカスタマイズするのが美しいように思えます。

たとえば
http://hp.vector.co.jp/authors/VA007799/tips/tips2.htm
http://diary.moe.gr.jp/?000118#18_2_3
こういうケース。

が、CDocManager のインスタンスを作っている CWinApp::AddDocTemplate が
virtual でないので、ここをいじることができません。

そこでふと気づいてみると、CWinApp::InitApplication の中で、
CDocManager::pStaticDocManager が NULL でなければ、それを m_pDocManager
として使うようにするコードが見られます。
あらかじめここにカスタム DocManager のポインタを入れておけば、カスタマイズ
できそうですが、こういうことをしちゃっていいものなのかどうか…。

MFC のソースを検索すると、pStaticDocManager にインスタンスを作っているのは
CDocTemplate のコンストラクタだけです。
が、真っ当に行けばコイツが呼ばれるのは InitApplication より後のはず。

この pStaticDocManager 、および関連してるらしい CDocManager::bStaticInit は
何のためにあるのか、どう使われるのかご存知の方はいらっしゃいませんでしょうか?


引用
トピックタグ
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
Topic starter  

http://search.acty-net.ne.jp/mfc_search/archive/2001-2/msg02381.html

> CMyApp::InitInstance() 内で、かつ AddDocTemplate() がよばれる
> 前に以下の行を挿入すればOKです。
> m_pDocManager = new CMyDocManager;

これだけの話なんだろうか…。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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