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

在使用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;

//....

你可能感兴趣的:(win32,按钮处理鼠标滑过消息)