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 は
何のためにあるのか、どう使われるのかご存知の方はいらっしゃいませんでしょうか?
http://search.acty-net.ne.jp/mfc_search/archive/2001-2/msg02381.html
> CMyApp::InitInstance() 内で、かつ AddDocTemplate() がよばれる
> 前に以下の行を挿入すればOKです。
> m_pDocManager = new CMyDocManager;
これだけの話なんだろうか…。