win32,按钮处理鼠标滑过消息

本文介绍如何在Win32应用程序中处理鼠标事件以实现按钮的多态效果。通过重写WM_MOUSEMOVE消息处理函数,并利用TrackMouseEvent进行鼠标状态跟踪。文章详细展示了WM_MOUSELEAVE及WM_MOUSEHOVER消息的处理方法。
摘要由CSDN通过智能技术生成

在使用MFC处理鼠标滑过按钮,以实现按钮的多态时候,非常简单,重写mousemove消息处理函数即可。但是使用win32 实现消息处理,却容易犯错,以后同样在WM_MOUSEMOVE消息处理即可。

   鼠标滑过按钮窗体时候,触发WM_MOUSEMOVE,此时启动一个TrackMouseEvent事件,即为跟踪鼠标状态。

LRESULT BtnWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
     PAINTSTRUCT ps;
     HDC hdc;

     switch(uMsg)
     {

    case WM_MOUSEMOVE:
     {
        TRACKMOUSEEVENT tme;
        tme.cbSize = sizeof(tme);
        tme.hwndTrack = hWnd;
        tme.dwFlags = TME_LEAVE | TME_HOVER;
        tme.dwHoverTime = 30;
        TrackMouseEvent(&tme);
     }
     break;
    case WM_MOUSELEAVE: //当鼠标指针离开按钮时,触发该消息函数
     {   

     hdc = GetDC(hWnd);
       if ( m_bCapture == true) //鼠标按下
       {
                }
       else
       {
       }
       }
          break;
    case WM_MOUSEHOVER: //当鼠标指针位于按钮之上时,触发该消息函数
     {
        if ( m_bCapture == true) //鼠标按下
        { 
        }
        else
        {
        }
     }
    break;

//....

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值