- ベストアンサー
CDocumentの取得方法について
CTreeCtrlクラスを使って、 ドキュメントクラスのデータを ダイアログ上のツリーコントロールに 表示させるプログラムを作っています。 CViewクラスでは、GetDocument()関数で ドキュメントデータを取得できますが、 CTreectrlクラスには、そのような関数がないので、 困っています。 どうすれば、ドキュメントデータをツリー表示できるのかを教えてください。 よろしくお願いします。
- みんなの回答 (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すればよいかと。
お礼
ご教授ありがとうございました。 おかげさまで、無事Viewへのポインタを取得できました。 AfxGetApp関数やCFrameWndクラスのヘルプを見ることで 今まで見えなかった世界が開けてきました。 ありがとうございました。