找了好久资料,只需要选择一行然后变色。留记录
void TravelAll(HTREEITEM ht, CString &str);
CString str;
BOOL jie_digui =0;
UINT MyThread_Refresh2(LPVOID pParam) //线程
{
// m_edit_sousuo.EnableWindow(false); //点击控件不可用
TravelAll(h1, str);
return 0;
}
//递归遍历树控件子节点
void TravelAll(HTREEITEM ht, CString &str)
{
ofstream fout("C:\\Users\\Bin\\Desktop\\树控件测试.txt");
string strTemp ="";
CString cstr = "";
cstr = m_Tree.GetItemText(ht);
strTemp = cstr.GetBuffer(0);
HTREEITEM hCurItem = m_Tree.GetChildItem(ht);
if (strstr(cstr, str) != false) //strstr字符串是否包含比对角色要注意谁先谁后前面是主后面是对比
{
m_Tree.Expand(ht, TVE_EXPAND); //展开搜索到的
m_Tree.Select(ht, TVGN_FIRSTVISIBLE); // 这个是打开后排名第一
m_Tree.Select(ht, TVGN_DROPHILITE); // 然后调用下面这句就可以了加亮该节点了 m_Three为控件变量 会被固定住不能选其他需要搭配
m_Tree.Select(0, TVGN_DROPHILITE); //取消固定。
jie_digui = 1;
fout << "一样就进来" << strTemp << endl;
}
HTREEITEM hNextItem;
while (hCurItem)
{
if (jie_digui == 1)
{
jie_digui = 0;
return;
}
hNextItem = hCurItem;
TravelAll(hNextItem, str);
hCurItem = m_Tree.GetNextSiblingItem(hCurItem);
}
}
void CSiteAanalysisDlg::OnBnClickedButton6()
{
// TODO: 在此添加控件通知处理程序代码 //m_Tree
//点击的时候控件不能再用
GetDlgItem(IDC_EDIT2)->GetWindowText(str); //拿到edit编辑框内容
AfxBeginThread(MyThread_Refresh2, NULL, THREAD_PRIORITY_NORMAL, 0, 0, NULL); //创建线程
}
已经完成,点击搜索按钮抓取edit编辑框内容遍历整个Tree控件,高亮显示匹配并到达位置展开