void CDragListCtrl::OnLButtonUp(UINT nFlags, CPoint point) { if ( m_pDragImage == NULL ) { CListCtrl::OnLButtonUp( nFlags, point ); return; } ClipCursor( NULL ); ReleaseCapture(); m_pDragImage->DragLeave( this ); m_pDragImage->EndDrag(); delete m_pDragImage; m_pDragImage = NULL; if ( m_nDragDrop >= 0 ) SetItemState( m_nDragDrop, 0, LVIS_DROPHILITED ); //else // m_nDragDrop = GetItemCount(); OnDragDrop( m_nDragDrop ); }
inline HRESULT __stdcall ISimpleDropTarget::Drop(IDataObject * pDataObject, DWORD grfKeyState, POINTL ptl, DWORD * pdwEffect) { POINT pt; pt.x = ptl.x; pt.y = ptl.y; if (m_pdth) { m_pdth->Drop(pDataObject, &pt, *pdwEffect); } m_DataObject = NULL; dragInAction = false; bool canDrop = m_RightData && AllowDrop(ptl); if (canDrop) { auto files = GetFiles(pDataObject); OnDragDrop(files, grfKeyState, ptl); } else { *pdwEffect = DROPEFFECT_NONE; } return S_OK; }