For PM applications, the Workplace Shell sends DM_ messages to PM windows using the standard or enhanced direct manipulation protocols. The Workplace Shell will drag source objects rendered as OBJECT or as OS2FILE and will accept source objects rendered in the same way. The Workplace Shell also will send a DM_PRINTOBJECT message to items dropped on the printer object.
Users can drag source objects over windows that an object creates. When this occurs, the Workplace Shell sends DM_ messages to these windows. Therefore, window procedures associated with the windows that the object creates must be able to process DM_ messages.
Target objects are not necessarily able to process every type of source object that is dropped on them. They are, however, capable of processing more than one type of dropped source object. Printer objects, for example, cannot print binary files, but they can print both text and graphics files. Because of differing capabilities, each target object should determine if it can process the source object being dropped on it. The following table shows the direct manipulation messages that are sent to target objects and the methods that are invoked by the Workplace Shell:
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³Description ³Method Name ³Invoked On³Message Name ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³Format drag ³wpFormatDragItem ³Source ³None ³ ³information ³ ³ ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³Request ³wpRender ³Source ³DM_RENDER ³ ³rendering ³ ³ ³ ³ ³format ³ ³ ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³Rendering ³wpRenderComplete ³Target ³DM_RENDERCOMPLETE ³ ³request ³ ³ ³ ³ ³completed ³ ³ ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³Objects being ³wpDragOver ³Target ³DM_DRAGOVER ³ ³dragged over ³ ³ ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³Object has been³wpDrop ³Source ³DM_DROP ³ ³dropped ³ ³ ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³Drag/Drop is ³wpEndConversation³Target ³DM_ENDCONVERSATION³ ³complete ³ ³ ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
The "Source" and "Target" windows in the following diagram represent windows that have been subclassed, via CnrOwnerSubclassProc, by the Workplace Shell:
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ Source Target ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ³ ³ User begins drag ³ ³ (WM_BEGINDRAG ÄÄÄÄÄÄÄÄ>³ ³ or ³ ³ WM_PICKUP) ³ ³ ³ ³ ³ ³ wpFormatDragItem(sourceobject) ³ ³ ³ ³ DM_DRAGOVER ³ .>³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ>³ . ³ ³ . ³ wpDragOver(targetobject) . ³ ³ . ³ DDR_ response ³ ..³<ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄij ³ ³ User ends drag ³ ³ (WM_ENDDRAG)ÄÄÄÄÄÄÄÄÄÄ>³ ³ ³ DM_DROP ³ ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ>³ ³ ³ ³ wpDrop(targetobject) ³ ³ ... If source rendering is indicated ... ³ ³ ³ ³ ³ DM_RENDERPREPARE ³ ³ (If necessary) ³ ³<ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄij<. ³ ³ . ³ DM_RENDER ³ . ³ (If supported) ³ . ³<ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄij . ³ ³ . wpRender(sourceobject) ³ . ³ ³ . ³ DM_RENDERCOMPLETE ³ . ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ>³ . ³ ³.. ³ ³ ³ wpRenderComplete(targetobject) ³ ³ ³ ³ ³ ³ ³ ³ ³ DM_ENDCONVERSATION ³ ³<ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄij ³ ³ wpEndConversation(sourceobject)