CTreeCtrlの並べ替え – プログラミング – Home

通知
すべてクリア

CTreeCtrlの並べ替え


亀山
 亀山
(@亀山)
ゲスト
結合: 18年前
投稿: 133
Topic starter  

VC2005 MFC です。
CTreeCtrlを使っているのですが、「上へ」「下へ」のボタンを置いて
その階層内でアイテムの並べ替えができるようにしたいと思っています。
ドラッグでの移動は今回は考えていません。

CTreeCtrlのメンバ関数を調べてみたところ、
「移動」にあたるものが見あたらないのですが、これをやろうと思ったら、
子階層やその展開状態も含めてすべて指定位置にInsertItem()で入れなおし、
もとのアイテムをまるごとDeleteItem()で削除するしかないのでしょうか。
なんとなく、HTREEITEMの貼り替えをするだけですみそうな動作なのですが。

よろしくお願いいたします。


引用解決済
トピックタグ
お茶
 お茶
(@お茶)
ゲスト
結合: 20年前
投稿: 42
 

選択されたアイテムの親(上)、または子(下)のHTREEITEMを取得して、
そこにInsertItemをし直す、って感じでできそうな気がします。
(その後、択されたアイテムは削除する)

全部削除しなくてもできそう。


返信引用
亀山
 亀山
(@亀山)
ゲスト
結合: 18年前
投稿: 133
Topic starter  

ご意見ありがとうございます。

「子階層やその展開状態も含めてすべて指定位置に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を並べ替えるだけで
順番を変えられるような仕組みなのではと思っているのですが。


返信引用
お茶
 お茶
(@お茶)
ゲスト
結合: 20年前
投稿: 42
 

>SortChildren()というメンバ関数があるようなので、
>内部的にはHTREEITEMを並べ替えるだけで
>順番を変えられるような仕組みなのではと思っているのですが。
そこまで調べて予想できるのなら実際にやってみればよろし。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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