ツリー コントロールの特定のノードをクリックすると、リスト コントロールにデータをフェッチするツリー コントロールを持つダイアログを作成しました。これは、ノードを挿入しようとした方法です。
CString *sCommonAppkey = new CString(_szApp + sIsPath);
HTREEITEM hrCommon = m_cTreeCtrl.InsertItem(TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_PARAM, _T("Common"), icoPlanit, icoPlanit, 0, 0, (LPARAM)(LPCTSTR)sCommonAppkey, NULL, NULL);
ノードをクリックすると、イベント ハンドラ「OnTvnSelchangedExample」に送られ、HTREEITEM の insertitem メソッドの「lparam」パラメータで指定されたパスからデータがフェッチされます。
void **CExample**::OnTvnSelchangedExample(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
LPARAM lp = pNMTreeView->itemNew.lParam;
CString *sTempKey = (CString *)lp;
CString path = sTempKey->GetBuffer();
}
イベント ハンドラーでのみ lparam 値にアクセスできます。
ここで、ツリーのデータ全体の検索機能を実装したいと考えています。
そのため、ツリー内の特定のテキストを検索できるように、すべてのツリー ハンドルの lparam 値を順番に反復して取得する必要があります。したがって、ツリーのノードをクリックせずに、ツリーハンドル (HTREEITEM) の lparam 値を取得する可能性はありますか?