- 締切済み
チェックボックス付きツリービュー
お世話になっております。 WINAPIにて、チェックボックスつきのツリービューを作っているのですがした処理が出来なくて困っております。(環境:BCC) わかる方がおられれば答えてもらえないでしょうか? 親アイテムにチェックが付いたとき、子アイテム全てにチェックがつく。(Exceの日付フィルタと同じ動作) 子ウィンドウのチェックが一個でもはずれると親ウィンドウのチェックが■とかになるようにするにはどのようにすれば出来るのでしょうか? (全部はずれると、親のチェックもはずれる) 下記サイトを参照した限りではツリービュー自体はそんな処理はしてくれなさそうなのですが。 サブクラス化とかして、チェックイベント拾って、子ウィンドウにもチェックいれるとかの処理を自作しないといけないのでしょうか? http://yokohama.cool.ne.jp/chokuto/urawaza/api/index.html
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- Wr5
- ベストアンサー率53% (2173/4061)
チェックボックスの状態が変わったりすると、親ウィンドウに TVN_ITEMCHANGEDやTVN_ITEMCHANGINGが飛んできます。 そのメッセージを契機にHTREEITEMから、 TreeView_GetCheckState()で該当のアイテムのチェックボックスの状態が取得できます。(NMTVITEMCHANGE構造体のuStateNewからも取れると思いますが) さらに、TreeView_GetChild()で子が、TreeView_GetParent()で親が、TreeView_GetNextSibling()/TreeView_GetPrevSibling()で兄姉が取得できますので、 順次チェックボックスの状態の取得やTreeView_SetCheckState()/TreeView_SetItemState()でチェックボックスの設定が可能かと思います。 TreeView_SetItemState()のstateでINDEXTOSTATEIMAGEMASK()を使うことでチェックボックスのグレー表示なども可能かと。 # ListViewはそこそこ触ったことありますが、TreeViewはあまりさわったことないので、詳しい処理内容はちょっと… # 検索時のキーワードにくらいはなるでしょうか。
お礼
回答ありがとうございます、ちょっと頑張ってみようと思います。