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 );
}
Esempio n. 2
0
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;

}