プロが教えるわが家の防犯対策術!

お世話になっております。
WINAPIにて、チェックボックスつきのツリービューを作っているのですがした処理が出来なくて困っております。(環境:BCC)
わかる方がおられれば答えてもらえないでしょうか?
親アイテムにチェックが付いたとき、子アイテム全てにチェックがつく。(Exceの日付フィルタと同じ動作)
子ウィンドウのチェックが一個でもはずれると親ウィンドウのチェックが■とかになるようにするにはどのようにすれば出来るのでしょうか?
(全部はずれると、親のチェックもはずれる)

下記サイトを参照した限りではツリービュー自体はそんな処理はしてくれなさそうなのですが。
サブクラス化とかして、チェックイベント拾って、子ウィンドウにもチェックいれるとかの処理を自作しないといけないのでしょうか?
http://yokohama.cool.ne.jp/chokuto/urawaza/api/i …

A 回答 (1件)

チェックボックスの状態が変わったりすると、親ウィンドウに


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はあまりさわったことないので、詳しい処理内容はちょっと…
# 検索時のキーワードにくらいはなるでしょうか。
    • good
    • 0
この回答へのお礼

回答ありがとうございます、ちょっと頑張ってみようと思います。

お礼日時:2008/03/28 23:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!