MFC VC++6.0 SID WindowsXP
CTreeViewのOnInitialUpdateからCListViewへ関数でデータを送るのですが、
リストビューの更新がかかりません。
何故なのかさっぱりわかりません。
OnInitialUpdateの中ではビューの更新はかからないのでしょうか?
教えてください。
何をやりたいのかさっぱりです。
複数のViewを持つSDIのアプリケーションを作成していて、
CTreeViewとCListViewを持っているんですよね?
各Viewが表示すべきデータは、CDocumentが持っているべきで、
CTreeViewが直接CListViewを操作する、ということは原則に
反しています。
CTreeViewはCDocumentを更新し、CDocument::UpdateAllViews()で
CListView::OnUpdateを呼び出すべきと思います。
原則からはずれたら実現不可能、というわけではないですが、
特別な理由がないなら、原則に従う方が無難でしょう。
マルチビューで一方のビューへの操作が他方のビューへも反映されるようなアプリの
実装方法はたいちうさんの仰る通りだと思います。しかし、質問者のmikan さんは
OnInitialUpdate、つまりビューの初期表示の話をしていると思うので
CDocument::UpdateAllViews, CView::OnUpdate は関係無いでしょう。
デザパタとか MFC フレームワークに則るなら、ツリービューの初期表示ハンドラ
CxxxTreeView::OnInitialUpdate からリストビューの更新ハンドラ
CxxxListView::OnUpdate をコールするということはしないと思います。
また各ビュー間で直接情報交換するのを止めて、ドキュメントを介してインタフェースする
方が良いと思います。
表示すべき情報はドキュメントが保持し、各ビューは OnInitialUpdate でドキュメント
にアクセスして情報を取得して初期表示するという構造がオーソドックスかと。