Jump to content

GreQueryCharPositions

From EDM2
Revision as of 07:51, 5 March 2020 by Ak120 (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

GreQueryCharPositions stores, at the location addressed by paptXY, an array of world coordinates identifying the start points at which the device is to place each character of a given string.

This function must be supported by the presentation driver. GreQueryCharPositions is called by GpiQueryCharStringPos, and is used to get the position where the next string output would occur relative to the current presentation space position. It also returns the starting position of each character within that string.

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

Syntax

GreQueryCharPositions(hdc, pptlStart, flOptions, cChars, pchString, pAdx,
      paptXY, pInstance, lFunction)

Parameters

hdc (HDC) - input
Device context handle.
pptlStart (PPOINTL) - input
Pointer to (X,Y) coordinates of optional starting position.
flOptions (ULONG) - input
Options flags.
The following flags can be set:
CHS_VECTOR: If set, increment vector is present.
CHS_START_XY: If set, starting position is present. Otherwise, pptlStart is ignored.
cChars (LONG) - input
Number of bytes in string.
pchString (PCH) - input
Pointer to character string.
pAdx (PLONG) - input
Pointer to Increment array.
Vector of increment values with one element for each character in the string. After writing a character, the increment specifies the absolute distance in world coordinates to get to the starting point of the next character.
paptXY (PPOINTL) - input
Pointer to array where character positions are returned.
Pointer to an array of (cChars+1) returned positions. The first value in the array is the initial current position; the last value is the current position on return.
pInstance (PVOID) - input
Pointer to instance data.
lFunction (ULONG) - input
High-order WORD=flags; low-order WORD=NGreQueryCharPositions.

Return Code

rc (BOOL) - returns
Return Code.
On completion, the handling routine must return a BOOLEAN value to indicate success or an error.
  • TRUE Successful
  • FALSE 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:
  • PMERR_COORDINATE_OVERFLOW
  • PMERR_DEV_FUNC_NOT_INSTALLED
  • PMERR_EXCEEDS_MAX_SEG_LENGTH
  • PMERR_HDC_BUSY
  • PMERR_INSUFFICIENT_MEMORY
  • PMERR_INV_CHAR_ANGLE_ATTR
  • PMERR_INV_CHAR_MODE_ATTR
  • PMERR_INV_CHAR_POS_OPTIONS
  • PMERR_INV_CODEPAGE
  • PMERR_INV_COORD_SPACE
  • PMERR_INV_HDC
  • PMERR_INV_LENGTH_OR_COUNT
  • PMERR_INV_MATRIX_ELEMENT
  • PMERR_INV_SETID
  • PMERR_INV_TRANSFORM_TYPE

Refer to the "Error Explanations" section in the Presentation Manager Programming Reference for further explanation.

Remarks

GreQueryCharPositions is required for the management of device fonts in CM_MODE2 only. When the presentation driver has no device fonts, the handling routine must post PMERR_DEV_FUNC_NOT_INSTALLED.