OnToolHitTest(鼠标滑过,显示标题信息)

来源:互联网 发布:怎样投诉农村淘宝服务 编辑:程序博客网 时间:2024/06/16 21:30

1,添加消息响应

2。在OnToolTioText()中实现响应的功能

BOOL CMyTree::OnToolTipText( UINT id, NMHDR * pNMHDR, LRESULT * pResult )
{
 // need to handle both ANSI and UNICODE versions of the message
 TOOLTIPTEXTA* pTTTA = (TOOLTIPTEXTA*)pNMHDR;
 TOOLTIPTEXTW* pTTTW = (TOOLTIPTEXTW*)pNMHDR;
 CString strTipText;
 UINT nID = pNMHDR->idFrom;
 // Do not process the message from built in tooltip
 if( nID == (UINT)m_hWnd &&
  (( pNMHDR->code == TTN_NEEDTEXTA && pTTTA->uFlags & TTF_IDISHWND ) ||
  ( pNMHDR->code == TTN_NEEDTEXTW && pTTTW->uFlags & TTF_IDISHWND ) ) )
  return FALSE;
 
 // Get the mouse position
 const MSG* pMessage;
 CPoint pt;
 pMessage = GetCurrentMessage(); // get mouse pos
 ASSERT ( pMessage );
 pt = pMessage->pt;
 ScreenToClient( &pt );
 
 UINT nFlags;
 HTREEITEM hitem = HitTest( pt, &nFlags ); //Get item pointed by mouse
 
 LPTREEDATA lpTd=(LPTREEDATA)GetItemData(hitem);
 PTREESECOND lpTd1=(PTREESECOND)GetItemData(hitem);
 if(lpTd==NULL)
 {
  *pResult = 0;
  return TRUE;
 };  //CAST item data
 
 CString str;
 str = GuidToString(lpTd1->tag_Guid);
 BOOL IsFind = theApp.m_sysparam.FindSecondGuid(str);
 if(IsFind)
 {
 // PTREESECOND lpTd=(PTREESECOND)GetItemData(hitem);
  strTipText.Format(_T("%s"),lpTd1->tag_Name/*,lpTd->szDescription*/); //add node text to node data text
 }
 else
 {
  strTipText.Format(_T("%s %s"),lpTd->szName,lpTd->szDescription); //add node text to node data text
 }
  
#ifndef _UNICODE
  if (pNMHDR->code == TTN_NEEDTEXTA)
   lstrcpyn(pTTTA->szText, strTipText, 80);
  else
   _mbstowcsz(pTTTW->szText, strTipText, 80);
#else
  if (pNMHDR->code == TTN_NEEDTEXTA)
   _wcstombsz(pTTTA->szText, strTipText, 80);
  else
   lstrcpyn(pTTTW->szText, strTipText, 80);
#endif

 *pResult = 0;
 
 return TRUE;    // message was handled
}

原创粉丝点击