CTreeViewのOnInitialUpdateからCListViewへデータを送ると更新されない – プログラミング – Home

通知
すべてクリア

CTreeViewのOnInitialUpdateからCListViewへデータを送ると更新されない


mikan
 mikan
(@mikan)
ゲスト
結合: 20年前
投稿: 1
Topic starter  

MFC VC++6.0 SID WindowsXP

CTreeViewのOnInitialUpdateからCListViewへ関数でデータを送るのですが、
リストビューの更新がかかりません。

何故なのかさっぱりわかりません。
OnInitialUpdateの中ではビューの更新はかからないのでしょうか?

教えてください。


引用解決済
トピックタグ
たいちう
 たいちう
(@たいちう)
ゲスト
結合: 23年前
投稿: 662
 

何をやりたいのかさっぱりです。

複数のViewを持つSDIのアプリケーションを作成していて、
CTreeViewとCListViewを持っているんですよね?

各Viewが表示すべきデータは、CDocumentが持っているべきで、
CTreeViewが直接CListViewを操作する、ということは原則に
反しています。
CTreeViewはCDocumentを更新し、CDocument::UpdateAllViews()で
CListView::OnUpdateを呼び出すべきと思います。

原則からはずれたら実現不可能、というわけではないですが、
特別な理由がないなら、原則に従う方が無難でしょう。


返信引用
WIZ
 WIZ
(@WIZ)
ゲスト
結合: 20年前
投稿: 15
 

マルチビューで一方のビューへの操作が他方のビューへも反映されるようなアプリの
実装方法はたいちうさんの仰る通りだと思います。しかし、質問者のmikan さんは
OnInitialUpdate、つまりビューの初期表示の話をしていると思うので
CDocument::UpdateAllViews, CView::OnUpdate は関係無いでしょう。

デザパタとか MFC フレームワークに則るなら、ツリービューの初期表示ハンドラ
CxxxTreeView::OnInitialUpdate からリストビューの更新ハンドラ
CxxxListView::OnUpdate をコールするということはしないと思います。
また各ビュー間で直接情報交換するのを止めて、ドキュメントを介してインタフェースする
方が良いと思います。

表示すべき情報はドキュメントが保持し、各ビューは OnInitialUpdate でドキュメント
にアクセスして情報を取得して初期表示するという構造がオーソドックスかと。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました