• ベストアンサー

CDocumentの取得方法について

CTreeCtrlクラスを使って、 ドキュメントクラスのデータを ダイアログ上のツリーコントロールに 表示させるプログラムを作っています。 CViewクラスでは、GetDocument()関数で ドキュメントデータを取得できますが、 CTreectrlクラスには、そのような関数がないので、 困っています。 どうすれば、ドキュメントデータをツリー表示できるのかを教えてください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • hyde-la
  • ベストアンサー率28% (42/146)
回答No.1

Viewのポインタを取得し、必要なCView継承クラスへキャストして GetDocument()すれば問題ないです。 Viewを取得する方法は沢山あります。 例えばCTreeCtrlがViewの子ウィンドウとして生成されてるなら CMainFormView* pv = (CMainFormView *)pTreeCtrl->GetParent(); や、コントロールが別のダイアログにあり、且つViewが 一つだけの場合は、 CFrameWnd* pfrm = (CFrameWnd *)AfxGetApp()->GetMainWindow(); CMainView* pv = (CMainView *)pfrm->GetActiveView(); 複数viewがあった場合も、上記方法をちょっと工夫して 目的のViewが出てくるまでGetNextViewすればよいかと。

zico
質問者

お礼

ご教授ありがとうございました。 おかげさまで、無事Viewへのポインタを取得できました。 AfxGetApp関数やCFrameWndクラスのヘルプを見ることで 今まで見えなかった世界が開けてきました。 ありがとうございました。