HTREEITEMのツリー上のパスを取得したい – プログラミング – Home

HTREEITEMのツリー上のパスを取...
 
通知
すべてクリア

[解決済] HTREEITEMのツリー上のパスを取得したい


水の
 水の
(@水の)
ゲスト
結合: 20年前
投稿: 5
Topic starter  

WinXP SP2 MFC VC++6.0

HTREEITEMを利用しツリーリストを作成しました。
そこでツリー上のパスを取得したいと思っています。
何か良い方法あれば教えてください

aa
bbb
ccc
dddd
sss

こんなツリーでddddを選択した場合のパスは
aa/ccc/dddとしたいです。


引用未解決
トピックタグ
aetos
(@aetos)
Noble Member
結合: 6年前
投稿: 1480
 

TVM_GETNEXTITEM + TVM_GETITEM で親がなくなるまで再帰処理するとか。
毎回それじゃ遅いと言うなら、子ノードを作るときに lParam 領域に親の情報を持たせ
ておくとか。


返信引用
akey
 akey
(@akey)
ゲスト
結合: 23年前
投稿: 53
 

1.GetSelectedItemで自分のハンドルを取得
2.GetItemTextで名前を取得
3.名前を繋げる
4.GetParentItemで親のハンドルを取得
5.ハンドルがNULLになるまで2~4を繰り返し


返信引用
水の
 水の
(@水の)
ゲスト
結合: 20年前
投稿: 5
Topic starter  

完成しました。
みなさまありがとうございます。

// フォルダツリーのパスを取得
CString SearchView::GetFolTreePath(HTREEITEM iItem){

// 名前を取得
vector<CString> NameList;
while(iItem != NULL ){
NameList.push_back( m_Tree.GetItemText(iItem) );
iItem = m_Tree.GetParentItem(iItem);
}

// 名前をパスとして繋げる
CString Path;
bool FirstFlg = false;
for(int i = NameList.size(); i > 0; i-- ){

if(FirstFlg == false){
FirstFlg = true;
}else{
Path += \\;//2回目以降
}
Path += NameList[i-1];
}
return Path;
}


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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