WinXP SP2 MFC VC++6.0
HTREEITEMを利用しツリーリストを作成しました。
そこでツリー上のパスを取得したいと思っています。
何か良い方法あれば教えてください
aa
bbb
ccc
dddd
sss
こんなツリーでddddを選択した場合のパスは
aa/ccc/dddとしたいです。
TVM_GETNEXTITEM + TVM_GETITEM で親がなくなるまで再帰処理するとか。
毎回それじゃ遅いと言うなら、子ノードを作るときに lParam 領域に親の情報を持たせ
ておくとか。
1.GetSelectedItemで自分のハンドルを取得
2.GetItemTextで名前を取得
3.名前を繋げる
4.GetParentItemで親のハンドルを取得
5.ハンドルがNULLになるまで2~4を繰り返し
完成しました。
みなさまありがとうございます。
// フォルダツリーのパスを取得
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;
}