A direct manipulation operation begins in a default state, which means that, when the user drops objects on a target, the target is informed that it should perform its default operation. The target is responsible for defining its default operation. For a container window, the default should be a Move operation, if it is supported. The default for a device, such as a printer, should be a Copy operation.
As the user drags the object, the default operation can be overridden by pressing and holding one of the following augmentation keys:
Ctrl
The last key pressed and held at the time of the drop determines the operation to be performed. The target can determine the defined augmentation key that was pressed at the time of the drop by inspecting the usOperation field of the DRAGINFO data structure.
A target can define additional augmentation keys for its own use. In this case, usOperation would indicate that the operation is unknown, and the target needs to use WinGetKeyState to determine the actual augmentation key that was used.
As the user presses augmentation keys, the pointer currently being displayed is modified to provide the user with a visible cue as to the type of operation being performed.