1. 程式人生 > >win32,按鈕處理滑鼠滑過訊息

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;

//....