# MX\_DRAGDROP > [HTML Version](mx_dragdrop.htm) _Added July 2021_ **xcall MIAMEX, MX\_DRAGDROP, opcode, status, ctlid \{,fidx ,fspec\}** MX\_DRAGDROP (MIAMEX 199) provides support for accepting files dragged and dropped from Windows File Explorer—or another Windows Shell object—onto a control created with AUI\_CONTROL. This function has both a [subroutine and a print tab implementation](subroutine-print-pairs.htm.md). To enable the feature, specify the WS\_EX\_ACCEPTFILES (\&h0010) flag in the _winstylex_ parameter of the AUI\_CONTROL call when creating the target control. Typically this would be a static control, perhaps with a colored background and some explanatory text (e.g. “"Drop files here"), but in theory it could be nearly any control type—including dialogs—that are created with AUI\_CONTROL. Two modes are supported: destructive and non-destructive. In the destructive mode, each drop event replaces the existing contents of the drop buffer with the newly dragged file specs, as with a clipboard Copy. In the non-destructive mode, each drop event adds to the existing contents of the drop buffer. Destructive mode is the default. Non-destructive mode is established via MX\_DRAGDROP _opcode_ 3 after creating the drop target control. In both modes, the drop event triggers exitcode -75,notifying the application so that it can respond by querying and/or retrieving the filespecs using the MX\_DRAGDROP function. **Parameters** _opcode_ ([Num](num.htm.md)) \[in\] | **Value** | **Description** | |------|------| | 0 | query drop buffer, set _status_ parameter to the number of files in the drop target (_ctlid_) | | 1 | retrieve _fspec_ corresponding to _fidx_ from the specified drop target (_ctlid_) | | 2 | clear the contents of the drop target buffer | | 3 | set non-destructive (previous "asynchronous") mode | _status _ (Signed [Num](num.htm.md)) \[out\] <=0: failure, or no files available in opcode 0; >0: success, which is the number of files for _opcode_ 0, or the number of bytes in _fspec_ for _opcode_ 1 _ctlid_ ([String](string.htm.md) ) \[in\] control id of the target control _fidx_ ([Num](num.htm.md)) \[in\] for _opcode_ 1, must be set to the number of the _fspec_ to retrieve (starting with 1) _fspec_ ([String](string.htm.md) ) \[out\] file specification returned for _opcode_ 1 **Comments** Note that it isn’t actually the files themselves that are being dragged and dropped; it is just their file specifications. Although the implementation is primarily on the Windows side, accessing the new MX\_DRAGDROP feature from an ATE session will require that the server instance of A-Shell also be at least at version 6.5.1705. There is nothing stopping you from defining more than one drop target control within a given UI context. But since all drop events trigger the same exitcode -75, you would need to query each of the possible drop target controls in order to identify which control received the drop event. **Examples** Create a drop target control—in this case, a static text control. The critical element here is the WS\_EX\_ACCEPTFILES value for the _winstylex_ parameter.… \! create the drop target (must be MBF\_STATIC with WS\_EX\_ACCEPTFILES) DROPCTLID\$ = “txtDropTarget” xcall AUI, AUI\_CONTROL, CTLOP\_ADD, DROPCTLID\$, \& "Drop File(s) Here" + chr(13) + "Click to query", MBST\_ENABLE, \& MBF\_STATIC+MBF\_CENTER+MBF\_KBD, "VK\_xF100", NUL\_FUNC\$, NUL\_CSTATUS, \& srow,scol,erow,ecol, NUL\_FGC, \&hddccbb, \& NUL\_FONTATTR, NUL\_FONTSCALE, NUL\_FONTFACE\$, NUL\_TOOLTIP\$, \& DLGID\$, NUL\_WINCLASS\$, NUL\_WINSTYLE, WS\_EX\_ACCEPTFILES, \& NUL\_CTYPE2 Set asynchronous mode: opcode = 3 ctlid = DROPCTLID\$ xcall MIAMEX, MX\_DRAGDROP, opcode , status, ctlid Query drop target to see how many files are available: opcode = 0 ctlid = DROPCTLID\$ xcall MIAMEX, MX\_DRAGDROP, opcode , status, ctlid count = status \! # of files in target Retrieve file specifications from the drop target: opcode = 1 ctlid = DROPCTLID\$ for fidx = 1 to count \! count retrieved from opcode 0 xcall MIAMEX, MX\_DRAGDROP, opcode, status, ctlid, fidx, fspec\$ ? “File #”;fidx;” : “;fspec\$ next fidx **Also See** • The sample program [FILEDROP1.BP in EXLIB:\[908,90\]](https://bitbucket.org/microsabio/exlib/src/master/908090/filedrop1.bp) illustrating a simple drag-drop user interface. **History** 2021 July, A-Shell 6.5.1705: Routine added to A-Shell.