VC++如何添加鼠标停留和离开的消息

本文介绍如何在MFC应用程序中为按钮添加鼠标悬停和鼠标离开的效果,通过重写CButton类并利用WM_MOUSEHOVER和WM_MOUSELEAVE消息,实现了按钮在鼠标悬停时显示3D边框效果以及鼠标离开时刷新界面的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  .h文件加入:  
                    afx_msg       LRESULT     OnMouseLeave(WPARAM   ,LPARAM   );        
  afx_msg       LRESULT     OnMouseHover(WPARAM   ,LPARAM   );        
   
  .cpp文件加入:  
              ON_MESSAGE(WM_MOUSELEAVE,OnMouseLeave)        
              ON_MESSAGE(WM_MOUSEHOVER,OnMouseHover)    
  LRESULT   CIconButton::OnMouseLeave(WPARAM     wParam,LPARAM   lParam)        
  {      
  InvalidateRect(NULL);  
  return       0;        
  }        
   
  LRESULT     CIconButton::OnMouseHover(WPARAM       wParam,LPARAM       lParam)        
  {        
  CClientDC   dc(this);  
  CRect   rt;  
  GetClientRect(&rt);  
  dc.Draw3dRect(0,0,  
  m_rect.right-m_rect.left,m_rect.bottom-m_rect.top,  
  RGB(0,0,0),RGB(10,10,10));  
  return       0;        
  }        
   
   
  void   CIconButton::OnMouseMove(UINT   nFlags,   CPoint   point)    
  {  
  //   TODO:   Add   your   message   handler   code   here   and/or   call   default  
   
  CButton::OnMouseMove(nFlags,   point);  
  TRACKMOUSEEVENT       tme;        
  tme.cbSize=sizeof(TRACKMOUSEEVENT);        
  tme.dwFlags=TME_HOVER       |       TME_LEAVE;        
  tme.dwHoverTime=HOVER_DEFAULT;      
  tme.hwndTrack=m_hWnd;    
          _TrackMouseEvent(&tme);        
  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值