| 1369 | } |
| 1370 | |
| 1371 | LRESULT OnMouseMove(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& bHandled) |
| 1372 | { |
| 1373 | bHandled = FALSE; |
| 1374 | |
| 1375 | DWORD dwStyle = this->GetStyle(); |
| 1376 | POINT ptCursor = {GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)}; |
| 1377 | |
| 1378 | T* pT = static_cast<T*>(this); |
| 1379 | if(ectcMouseInWindow != (m_dwState & ectcMouseInWindow)) |
| 1380 | { |
| 1381 | TRACKMOUSEEVENT tme = { 0 }; |
| 1382 | tme.cbSize = sizeof(tme); |
| 1383 | tme.dwFlags = TME_LEAVE; |
| 1384 | tme.hwndTrack = m_hWnd; |
| 1385 | if( _TrackMouseEvent(&tme) ) |
| 1386 | { |
| 1387 | m_dwState |= ectcMouseInWindow; |
| 1388 | |
| 1389 | pT->UpdateLayout(); |
| 1390 | this->Invalidate(); |
| 1391 | |
| 1392 | // "OnMouseEnter" |
| 1393 | //... |
| 1394 | } |
| 1395 | } |
| 1396 | |
| 1397 | if( (m_iDragItem >= 0) && |
| 1398 | (ectcMouseInWindow == (m_dwState & ectcMouseInWindow)) && |
| 1399 | (ectcDraggingItem != (m_dwState & ectcDraggingItem)) && |
| 1400 | (ectcMouseDownL_TabItem == (m_dwState & ectcMouseDown)) && |
| 1401 | (m_ptDragOrigin.x != ptCursor.x)) |
| 1402 | { |
| 1403 | pT->BeginItemDrag(m_iDragItem, m_ptDragOrigin); |
| 1404 | } |
| 1405 | else if(ectcDraggingItem == (m_dwState & ectcDraggingItem)) |
| 1406 | { |
| 1407 | pT->ContinueItemDrag(ptCursor); |
| 1408 | } |
| 1409 | else if(ectcMouseInWindow == (m_dwState & ectcMouseInWindow)) |
| 1410 | { |
| 1411 | // hit test |
| 1412 | if(::PtInRect(&m_rcCloseButton, ptCursor)) |
| 1413 | { |
| 1414 | if( ectcMouseOver_CloseButton != (m_dwState & ectcMouseOver)) |
| 1415 | { |
| 1416 | this->ClearCurrentMouseOverTracking(true); |
| 1417 | m_dwState |= ectcMouseOver_CloseButton; |
| 1418 | |
| 1419 | if(ectcMouseDownL_CloseButton == (m_dwState & ectcMouseDown)) |
| 1420 | { |
| 1421 | this->InvalidateRect(&m_rcCloseButton); |
| 1422 | } |
| 1423 | } |
| 1424 | else if( 0 == (m_dwState & ectcMouseDown) && |
| 1425 | ectcHotTrack_CloseButton != (m_dwState & ectcHotTrack)) |
| 1426 | { |
| 1427 | this->ClearCurrentHotTracking(true); |
| 1428 | m_dwState |= ectcHotTrack_CloseButton; |
nothing calls this directly
no test coverage detected