掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
たった1度しか開かないツリーを2度目以降も開くようにするには? (ID:52529)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
はじめまして、ボッケドリといいます。 Win2K(SP4)+VC6(SP3) でやってます。 今やってることは、 エクスプローラのように左側をツリービュー 右側をリストビュー にし、 データを管理するものを作ってます。 MFC AppWizard(exe) からステップを進め、Windows エクスプローラスタイルを 選択して始めました。 今作ってる所は、 リストビューの項目をダブルクリックして、ツリービューの閉じてるノードを 開く処理です。ダブルクリックされたら CMyListView::OnDblclk() で ツリービュー の目的のノードを探しだし、見つかったノードに対して 開けメッセージを送ってます。処理はこんなん感じです。 // // 目的のノードを探して開けメッセージを送る。 // HTREEITEM trItem; // 表示されてる最初のノードを探す trItem = pDoc->m_leftView->GetFirstVisibleItem(); while (trItem != NULL) { if (目的のノードだった) { // そしてメッセージを送る。 ::SendMessage(pDoc->m_leftView->m_hWnd, TVM_EXPAND, TVE_EXPAND, (DWORD)trItem); retrun; } // 次の表示されてるノードを探す trItem = pDoc->m_leftView->GetNextVisibleItem(trItem); } そして期待通りにノードが開いてくれました。 これでOKと思ってたら問題がありました。 困った事というのは、 開いたノードをマウスで閉じた後、再びリストビューの項目をダブルクリック しても期待した通りにノードが開かない事です。 そのノードの下に子がある事を示すために仮に付けといた子が現れるだけです。 マウスで操作すればメッセージがちゃんと届くのに上のような処理だと CMyLeftView::OnItemexpanding() にはたった1度しかメッセージが届いてない というのが分りました。 原因を調べてるうちに TVIS_EXPANDEDONCE というフラグが関係してるらしい というのが分りましたが、どう対処したらいいのか分りませんでした。 再びツリーが開くようにメッセージが届くようにするにはどうしたら良いのか 誰か教えてください。お願いします。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.