MDI形式で複数のウィンドウをツリービュー選択から表示させるには

解決


ラウルさん  2009-10-06 02:29:03  No: 71008  IP: [192.*.*.*]

初めまして。
現在、vc++2008 sp1 MFC MDI でアプリケーションを作成しています。

イメージとしては、"VS2008スタイル"で、"vc++ の「ツール」->「オプション」"のような形を実現したいと考えております。
それには、MDI形式で複数の子ウィンドウ(基本クラス:フォームビュー)をリソースで生成し、ツリービュー(基本クラス:ドッキングペイン)からの項目選択で表示させる、ことができれば最適なのですが、ツリービューからのウィンドウ呼び出しがうまくできないでいます。

[現在行ったこと]
1.ツリービューの項目を選択し、その文字列を取得しメッセージボックスで表示。
2.ドキュメントテンプレートを作成し、MDIより自動生成される子ウィンドウにボタンを配置し、そのボタンよりドキュメントテンプレート呼び出し。
参考URL
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200611/06110053.txt

これをボタンじゃなく、ツリービューからの選択にしたいです。
そこでお尋ねしたいのですが、2.の際の
  ClDoc* GetDocument() const;
が、MDIより自動生成される子ウィンドウビューのファイルにあるのですが、
これをツリービューのクラスで使用することはできないのでしょうか?

また、他の方法等があればアドバイスをもらえたらと思います。
よろしくお願いします。

編集 削除
仲澤@失業者  2009-10-06 12:01:14  No: 71009  IP: [192.*.*.*]

ViewクラスにコードされるGetDocument()で取得できるドキュメントクラスは
MDI子ウインドウを作成する過程で作成するドキュメントと同じものです。
RUNTIME_CLASSで登録したドキュメントクラスの型にキャストして
かまいません。管理するならこっちを対象にしましょう。

MyDoc * Doc = ( MyDoc *)MyDocTmplt->CreateNewDocument();//★これと
MyFrm * Frm = ( MyFrm *)MyDocTmplt->CreateNewFrame( Doc, NULL);  

class MyView : public CView{・・・};
MyDoc * MyView::GetDocument() const{・・・}//★これは
同じものです。

編集 削除
ラウルさん  2009-10-08 22:37:59  No: 71010  IP: [192.*.*.*]

返信が遅くなってしまい申し訳ありません。
仲澤@失業者さん、本当にありがとうございました。

助言どおりの方法で上手く期待する動作を行うことができました。
おかげさまで勉強させていただきました。

編集 削除