关于CTreeCtrlr的=NM_DBLCLK、=NM_RCLICK的用法

//判断双击的ITEM是否有父ITEM,如果有,弹出聊天窗口;否则,则展开或收缩ITEM

void CIMTree::OnDblclk(NMHDR* pNMHDR, LRESULT* pResult)
{
 // TODO: Add your control notification handler code here
 //MessageBox("d");
 //判断是否是你项目,如果是父项目,则不弹出聊天对话框,否则,弹出聊天对话框
 HTREEITEM hitem;
 hitem=this->GetSelectedItem();
 if(this->GetParentItem(hitem))
 {
  //将点击项目的用户名传递给聊天对话框
  CString test=this->GetItemText(hitem);
  CIMChat dlgChat;
  dlgChat.SetUserInfo(test);
  dlgChat.DoModal();  
 } 
 *pResult = 0;
}

//如果鼠标在某个ITEM上,弹出一个菜单;如果鼠标在空白区,弹出另一个菜单

 void CIMTree::OnRclick(NMHDR* pNMHDR, LRESULT* pResult)
 {
 
  HTREEITEM   hSelect   =   this->GetSelectedItem();  
  HTREEITEM   hLight   =   this->GetDropHilightItem();  
  if(hLight   !=   NULL   &&   hSelect   !=   hLight)  
   hSelect   =   hLight;  
  if(hSelect   ==   NULL)  
   return;  
  this->SelectItem(hSelect);
 
  CPoint point;
  ::GetCursorPos(&point);
  POINT tempPoint;
  tempPoint.x=point.x;
  tempPoint.y=point.y;
  m_hSelectItem=this->GetSelectedItem();
 
  RECT itemRect;
  RECT windowRect;
  ::GetWindowRect(this->m_hWnd,&windowRect);
  this->GetItemRect(m_hSelectItem,&itemRect,TRUE);
//  UINT nFlags;
//  this->HitTest(point,&nFlags);
  if((m_hSelectItem != NULL)&&
   (tempPoint.x>itemRect.left+windowRect.left&&
   tempPoint.x<itemRect.right+windowRect.left&&
   tempPoint.y>itemRect.top+windowRect.top&&
   tempPoint.y<itemRect.bottom+windowRect.top)
   /* && (TVHT_ONITEM & nFlags)*/) 
  {  
   CMenu   menu;  
   CMenu   *ptrMenu;  
   menu.LoadMenu(IDR_MENU1);  
   ptrMenu=menu.GetSubMenu(0);  
   ptrMenu->TrackPopupMenu  
    (
    TPM_LEFTALIGN|TPM_RIGHTBUTTON,  
    tempPoint.x,  
    tempPoint.y,  
    this,  
    NULL  
    );   
  }
  else
  {
   CMenu   menu;  
   CMenu   *ptrMenu;  
   menu.LoadMenu(IDR_MENU2);  
   ptrMenu=menu.GetSubMenu(0);  
   ptrMenu->TrackPopupMenu  
    (
    TPM_LEFTALIGN|TPM_RIGHTBUTTON,  
    tempPoint.x,  
    tempPoint.y,  
    this,  
    NULL  
    );  
  }

  *pResult = 0;
 }


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值