Work at SourceForge, help us to make it a better place! We have an immediate need for a Support Technician in our San Francisco or Denver office.

Close

[r5083]: tags / V3_12 / DropSource.cpp Maximize Restore History

Download this file

DropSource.cpp    48 lines (35 with data), 1.2 kB

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/*
* Copyright (c) 2003-2008 Rony Shapiro <ronys@users.sourceforge.net>.
* All rights reserved. Use of the code is allowed under the
* Artistic License 2.0 terms, as specified in the LICENSE file
* distributed with this code, or available from
* http://www.opensource.org/licenses/artistic-license-2.0.php
*/
#include "stdafx.h"
#include "afxole.h"
#include "DropSource.h"
CDataSource::CDataSource()
{
}
CDataSource::~CDataSource()
{
}
DROPEFFECT CDataSource::StartDragging(BYTE *szData, DWORD dwLength, CLIPFORMAT cpfmt,
RECT *rClient, CPoint *ptMousePos)
{
HGLOBAL hgData = GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT, dwLength);
ASSERT(hgData != NULL);
LPCSTR lpData = (LPCSTR)GlobalLock(hgData);
ASSERT(lpData != NULL);
memcpy((void *)lpData, szData, dwLength);
CacheGlobalData(cpfmt, hgData);
DROPEFFECT dropEffect = DoDragDrop(DROPEFFECT_COPY | DROPEFFECT_MOVE,
(LPCRECT)rClient);
if ((dropEffect & DROPEFFECT_MOVE) == DROPEFFECT_MOVE)
CompleteMove();
LPARAM lparam = (LPARAM(ptMousePos->y) << 16) | LPARAM(ptMousePos->x);
SendMessage(GetActiveWindow(), WM_LBUTTONUP, 0, lparam);
Empty();
//InternalRelease();
return dropEffect;
}