DrgFreeDraginfo: Difference between revisions
Appearance
Line 5: | Line 5: | ||
==Parameters== | ==Parameters== | ||
;pdinfo (PDRAGINFO) - input: Pointer to the DRAGINFO structure. | ;pdinfo (PDRAGINFO) - input: Pointer to the [[DRAGINFO]] structure. | ||
==Returns== | ==Returns== |
Latest revision as of 03:39, 25 April 2025
This function frees a DRAGINFO structure allocated by DrgAllocDraginfo.
Syntax
DrgFreeDraginfo(pdinfo)
Parameters
- pdinfo (PDRAGINFO) - input
- Pointer to the DRAGINFO structure.
Returns
- rc (BOOL) - returns
- Success indicator.
- TRUE - Successful completion.
- FALSE - Error occurred.
Remarks
DrgFreeDraginfo fails with an error of PMERR_SOURCE_SAME_AS_TARGET if it is called by the process that called DrgDrag before DrgDrag returns. When a process is performing a drag operation between two of its own windows, this prevents the source window from freeing the DRAGINFO structure before the target window finishes processing.
Errors
Possible returns from WinGetLastError:
- PMERR_MEMORY_DEALLOCATION_ERR (0x1113)
- An error occurred during memory management.
- PMERR_SOURCE_SAME_AS_TARGET (0x1502)
- The direct manipulation source and target process are the same.
Example Code
#define INCL_WINSTDDRAG /* Direct Manipulation (Drag) Functions */ #include <os2.h> BOOL fSuccess; /* Indicate success or failure */ PDRAGINFO pdinfo; /* Pointer to DRAGINFO structure */ HWND hwnd; /* Handle of calling (source) window */ DRAGIMAGE dimg; /* DRAGIMAGE structure */ HWND hwndDrop; /* Handle of drop (target) window */ /****************************************************************/ /* Perform the drag operation: */ /* - Give the user a visual cue by changing the pointer to a */ /* bit map */ /* - Send DM_DRAGOVER messages to the target window (in this */ /* case it is also the source) */ /****************************************************************/ hwndDrop = DrgDrag(hwnd, /* Source of the drag */ pdinfo, /* Pointer to DRAGINFO structure */ (PDRAGIMAGE)&dimg, /* Drag image */ 1, /* Size of the pdimg array */ VK_ENDDRAG, /* Release of drag button */ /* Terminates the drag */ NULL); /* Reserved */ fSuccess = DrgFreeDraginfo(&pdinfo);