DrgPostTransferMsg
Appearance
This function posts a message to the other application involved in the direct manipulation operation.
Syntax
DrgPostTransferMsg(hwnd, msg, pdxfer, fl, ulRsvd, fRetry)
Parameters
- hwnd (HWND) - input
- Window handle to which the message is to be posted.
- Target: hwndItem in the DRAGITEM structure.
- Source: hwndClient in the DRAGTRANSFER structure.
- msg (ULONG) - input
- Identifier of the message to be posted.
- DM_RENDERCOMPLETE is the only valid message.
- pdxfer (PDRAGTRANSFER) - input
- Pointer to the DRAGTRANSFER structure.
- fl (ULONG) - input
- Flags to be passed in the param2 parameter of the message identified by msg.
- ulRsvd (ULONG) - input
- Reserved value, must be 0.
- fRetry (BOOL) - input
- Retry indicator.
- TRUE - If the destination queue is full, the message posting is retried at 1-second intervals until the message is posted successfully. In this case, DrgPostTransferMsg dispatches any messages in the queue by calling WinPeekMsg and WinDispatchMsg in a loop. The application can receive messages sent by other applications while it is trying to post drag transfer messages.
- FALSE - The call returns FALSE without retrying.
Returns
- rc (BOOL) - returns
- Success indicator.
- TRUE - Successful completion.
- FALSE - Error occurred.
Remarks
The fsReply field in the DRAGTRANSFER structure is set to 0 before the message is posted. If the posting fails for any reason, FALSE is returned.
Example Code
#define INCL_WINSTDDRAG /* Direct Manipulation (Drag) Functions */
#include <os2.h>
MPARAM mp1; /* Message parameter 1 */
BOOL fSuccess; /* Indicate success or failure */
BOOL Rendered; /* Success of render operation */
PDRAGTRANSFER pdxfer; /* Pointer to DRAGTRANSFER structure */
case DM_RENDER:
pdxfer = (PDRAGTRANSFER)PVOIDFROMMP(mp1); /* Get DRAGTRANSFER */
/* structure */
/************************************************************/
/* Attempt to render file */
/************************************************************/
if (Rendered)
{
fSuccess = DrgPostTransferMsg(pdxfer->pditem,
DM_RENDERCOMPLETE,
pdxfer,
DMFL_RENDEROK,
0,FALSE);
return (MRESULT)TRUE;
}
else
{
fSuccess = DrgPostTransferMsg(pdxfer->pditem,
DM_RENDERCOMPLETE,
pdxfer,
DMFL_RENDERFAIL,
0,FALSE);
return (MRESULT)FALSE;
}