VC2005 MFC です。
CTreeCtrlを使っているのですが、「上へ」「下へ」のボタンを置いて
その階層内でアイテムの並べ替えができるようにしたいと思っています。
ドラッグでの移動は今回は考えていません。
CTreeCtrlのメンバ関数を調べてみたところ、
「移動」にあたるものが見あたらないのですが、これをやろうと思ったら、
子階層やその展開状態も含めてすべて指定位置にInsertItem()で入れなおし、
もとのアイテムをまるごとDeleteItem()で削除するしかないのでしょうか。
なんとなく、HTREEITEMの貼り替えをするだけですみそうな動作なのですが。
よろしくお願いいたします。
選択されたアイテムの親(上)、または子(下)のHTREEITEMを取得して、
そこにInsertItemをし直す、って感じでできそうな気がします。
(その後、択されたアイテムは削除する)
全部削除しなくてもできそう。
ご意見ありがとうございます。
「子階層やその展開状態も含めてすべて指定位置にInsertItem()で入れなおし」
というのは、「移動したいアイテムの階層部分を、子階層や~」という意味でした。
わかりにくい表現で申し訳ありません。
ROOT
├AAAA
├BBBB
│├1111
│└2222
├CCCC
│├3333
│└4444
└DDDD
の「BBBB」を下に移動し、
ROOT
├AAAA
├CCCC
│├3333
│└4444
├BBBB
│├1111
│└2222
└DDDD
としたい場合は、「BBBB」と「1111」と「2222」を、
「CCCC」の後ろに来るように再度InsertItem()し、
元の「BBBB」をDeleteItem()するしかないのでしょうか。
SortChildren()というメンバ関数があるようなので、
内部的にはHTREEITEMを並べ替えるだけで
順番を変えられるような仕組みなのではと思っているのですが。
>SortChildren()というメンバ関数があるようなので、
>内部的にはHTREEITEMを並べ替えるだけで
>順番を変えられるような仕組みなのではと思っているのですが。
そこまで調べて予想できるのなら実際にやってみればよろし。