Using the Drag-Drop Feature
When an application implements the
drag-drop feature, a user can select one or more files in File Manager, drag them to an
open application, and drop them there. The application in which the files were
dropped receives a message it can use to retrieve the filenames and the
coordinates of the point at which the files were dropped.
An application that can accept dropped files from File Manager calls the
DragAcceptFiles function for one or more of its windows. When the user releases the mouse
button to drop a file or files in the window specified in the call to
DragAcceptFiles, File Manager sends the application a
WM_DROPFILES message. (File Manager does not send the WM_DROPFILES message to an
application unless the application calls
DragAcceptFiles.) WM_DROPFILES contains a handle of a structure the application can query to
retrieve the name of the dropped file and the coordinates of the cursor when
the file was dropped. The application can use the
DragQueryFile function to retrieve a count of the files that were dropped and their names.
The
DragQueryPoint function returns the window coordinates of the cursor when the user released
the mouse button.
To free the memory allocated by the system for the WM_DROPFILES message, an
application calls the
DragFinish function when it is finished.
For example, an application can call the
DragAcceptFiles function when it starts and call a drag-drop function when it receives a
WM_DROPFILES message, as shown in the following example.
case WM_CREATE:
DragAcceptFiles(hwnd, TRUE);
break;
case WM_DROPFILES:
DragFunc(hwnd, wParam); /* application-defined function */
break;
case WM_DESTROY:
DragAcceptFiles(hwnd, FALSE);
break;
The following example uses the
DragQueryPoint function to determine where to begin to write text. The first call to the
DragQueryFile function determines the number of dropped files. The loop writes the name of
each file, beginning at the point returned by
DragQueryPoint.
POINT pt;
WORD cFiles, a;
char lpszFile[80];
DragQueryPoint((HANDLE) wParam, &pt);
cFiles = DragQueryFile((HANDLE) wParam, 0xFFFF, (LPSTR) NULL, 0);
for(a = 0; a < cFiles; pt.y += 20, a++) {
DragQueryFile((HANDLE) wParam, a, lpszFile, sizeof(lpszFile));
TextOut(hdc, pt.x, pt.y, lpszFile, lstrlen(lpszFile));
}
DragFinish((HANDLE) wParam);
- Software for developers
-
Delphi Components
.Net Components
Software for Android Developers
- More information resources
-
MegaDetailed.Net
Unix Manual Pages
Delphi Examples
- Databases for Amazon shops developers
-
Amazon Categories Database
Browse Nodes Database