VS2010/MFC编程(常用控件:树形控件Tree Control控件创建h和实例)

2020-01-06 16:34:14于丽

6. 我们希望在选中节点改变时,将最新的选择项实时显示到编辑框中,那么可以响应TVN_SELCHANGED通知消息。为树形控件IDC_WEB_TREE的通知消息TVN_SELCHANGED添加消息处理函数CExample31Dlg::OnTvnSelchangedWebTree,并修改函数体如下:


void CExample31Dlg::OnTvnSelchangedWebTree(NMHDR *pNMHDR, LRESULT *pResult)  
{  
  LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);  
  // TODO: Add your control notification handler code here  
  *pResult = 0;  
 
  CString strText; // 树节点的标签文本字符串  
    
  // 获取当前选中节点的句柄  
  HTREEITEM hItem = m_webTree.GetSelectedItem();  
  // 获取选中节点的标签文本字符串  
  strText = m_webTree.GetItemText(hItem);  
  // 将字符串显示到编辑框中  
  SetDlgItemText(IDC_ITEM_SEL_EDIT, strText);  
} 

 7. 还有一个功能需要实现,那就是鼠标划过除根节点外的某个树节点时,显示相应的Tip提示信息,本实例中提示信息为节点的编号。这需要响应TVN_GETINFOTIP通知消息。为树形控件IDC_WEB_TREE的通知消息TVN_GETINFOTIP添加消息处理函数CExample31Dlg::OnTvnGetInfoTipWebTree,并修改函数体如下:


void CExample31Dlg::OnTvnGetInfoTipWebTree(NMHDR *pNMHDR, LRESULT *pResult)  
{  
  LPNMTVGETINFOTIP pGetInfoTip = reinterpret_cast<LPNMTVGETINFOTIP>(pNMHDR);  
  // TODO: Add your control notification handler code here  
  *pResult = 0;  
  NMTVGETINFOTIP* pTVTipInfo = (NMTVGETINFOTIP*)pNMHDR;  // 将传入的pNMHDR转换为NMTVGETINFOTIP指针类型  
  HTREEITEM hRoot = m_webTree.GetRootItem();   // 获取树的根节点  
  CString strText;   // 每个树节点的提示信息  
 
  if (pTVTipInfo->hItem == hRoot)  
  {  
    // 如果鼠标划过的节点是根节点,则提示信息为空  
    strText = _T("");  
  }  
  else 
  {  
    // 如果鼠标划过的节点不是根节点,则将该节点的附加32位数据格式化为字符串  
    strText.Format(_T("%d"), pTVTipInfo->lParam);  
  }  
 
  // 将strText字符串拷贝到pTVTipInfo结构体变量的pszText成员中,这样就能显示内容为strText的提示信息  
  wcscpy(pTVTipInfo->pszText, strText);  
} 

8. 运行程序,弹出结果对话框。效果如下图:

mfc树形控件,mfc树形控件的使用,mfc中树形控件

树形控件的知识就讲到这里了,相比之前的控件可能稍有复杂。不过用的多了,就会觉得得心应手了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持ASPKU。


注:相关教程知识阅读请移步到C++教程频道。