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;
//....