GreSetCurrentPosition

GreSetCurrentPosition sets the current (X,Y) position and resets the line type sequence.

This function must be supported by all presentation drivers. GreSetCurrentPosition is called by the function GpiSetCurrentPosition. GreSetCurrentPosition might be called in response to any of the Presentation Manager drawing functions, which end their operations by updating the current presentation space position.


 * Simulation support: None. This function is mandatory for all drivers.

Syntax
GreSetCurrentPosition(hdc, pptlPosition, pInstance, lFunction)

Parameters

 * hdc (HDC) - input: Device context handle.
 * pptlPosition (PPOINTL) - input: Pointer to new current position.
 * When COM_TRANSFORM is set, the current position is expressed in world coordinates. Otherwise, this value is passed in device coordinates. The handling routine must transform these values as appropriate. Typically, the presentation driver maintains the current position in both coordinate sets in the DC instance data structure.


 * pInstance (PVOID) - input: Pointer to instance data.
 * lFunction (ULONG) - input: High-order WORD=flags; low-order WORD=NGreSetCurrentPosition.

Returns

 * rc (BOOL) - returns: Return code.

On completion, the handling routine must return a BOOLEAN value to indicate success or an error. Possible Errors Detected: When an error is detected, the handling routine must call WinSetErrorInfo to post the condition. Error codes for conditions that the handling routine is expected to check include:
 * TRUE Successful
 * FALSE Error
 * PMERR_BASE_ERROR
 * PMERR_COORDINATE_OVERFLOW
 * PMERR_DEV_FUNC_NOT_INSTALLED
 * PMERR_HDC_BUSY
 * PMERR_INV_COORD_SPACE
 * PMERR_INV_HDC
 * PMERR_INV_LENGTH_OR_COUNT
 * PMERR_PATH_LIMIT_EXCEEDED

Remarks
Typically, the handling routine also sets a flag in the DC instance data structure to indicate that the first pel of the next line must be drawn. When the COM_AREA or COM_PATH flag is set, this function is part of an area or path definition. In either case, the handling routine usually passes the call back to the graphics engine for processing by the default handling routine. The call would not be passed back to the graphics engine if the presentation driver had hooked all of the area and path functions.

When the current context is "in area," a figure closure line is generated (if necessary). This can cause a correlation hit to occur on an area boundary. The current position should only be correlated on, merged into the bounds, or both correlated and merged, if it is actually used in a drawing primitive.

The following is an example: ...   GreSetCurrentPosition (hdc, p1); ...             ...              ...    GreSetCurrentPosition (hdc, p2); ...             ...              ...    GrePolyLine (hdc, to p3, n); ... Notice that the sequence does not merge p1 into the bounds or correlate on it.