The ExtTextOut function draws a character string by using the currently selected font. An optional rectangle may be provided, to be used for clipping, opaquing, or both.
BOOL ExtTextOut(
HDC hdc, | // handle to device context |
int X, | // x-coordinate of reference point |
int Y, | // y-coordinate of reference point |
UINT fuOptions, | // text-output options |
CONST RECT *lprc, | // optional clipping and/or opaquing rectangle |
LPCTSTR lpString, | // points to string |
UINT cbCount, | // number of characters in string |
CONST INT *lpDx | // pointer to array of intercharacter spacing values |
); |
Parameters
hdc
Identifies the device context.
X
Specifies the logical x-coordinate of the reference point used to position the string.
Y
Specifies the logical y-coordinate of the reference point used to position the string.
fuOptions
Specifies how to use the application-defined rectangle. This parameter can be a combination of the following values:
Value | Meaning |
ETO_CLIPPED | The text will be clipped to the rectangle. |
ETO_GLYPH_INDEX | Windows 95 only: The lpString array refers to an array returned from GetCharacterPlacement and should be parsed directly by GDI as no further language-specific processing is required. Glyph indexing only applies to TrueType fonts, but the flag can be used for Windows bitmap and vector fonts to indicate no further language processing is necessary and GDI should process the string directly. Note that all glyph indices are 16-bit values even though the string is assumed to be an array of 8-bit values for raster fonts. |
ETO_OPAQUE | The current background color should be used to fill the rectangle. |
ETO_RTLREADING | Windows 95 only: If this value is specified and a Hebrew or Arabic font is selected into the device context, the string is output using right-to-left reading order. If this value is not specified, the string is output in left- to-right order. The same effect can be achieved by setting the TA_RTLREADING value in SetTextAlign. This value is preserved for backward compatability. |
The ETO_GLYPH_INDEX and ETO_RTLREADING values cannot be used together. Because ETO_GLYPH_INDEX implies that all language processing has been completed, the function ignores the ETO_RTLREADING flag if also specified.
lprc
Points to an optional RECT structure that specifies the dimensions of a rectangle that is used for clipping, opaquing, or both.
lpString
Points to the character string to be drawn. The string does not need to be zero-terminated, since cbCount specifies the length of the string.
cbCount
Specifies the number of characters in the string.
lpDx
Points to an optional array of values that indicate the distance between origins of adjacent character cells. For example, lpDx[i] logical units separate the origins of character cell i and character cell i + 1.
Return Values
If the string is drawn, the return value is nonzero.
If the function fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
The current text-alignment settings for the specified device context determine how the reference point is used to position the text. The text-alignment settings are retrieved by calling the GetTextAlign function. The text-alignment settings are altered by calling the SetTextAlign function.
If the lpDx parameter is NULL, the ExtTextOut function uses the default spacing between characters. The character-cell origins and the contents of the array pointed to by the lpDx parameter are given in logical units. A character-cell origin is defined as the upper-left corner of the character cell.
By default, the current position is not used or updated by this function. However, an application can call the SetTextAlign function with the fMode parameter set to TA_UPDATECP to permit Windows to use and update the current position each time the application calls ExtTextOut for a specified device context. When this flag is set, Windows ignores the X and Y parameters on subsequent ExtTextOut calls.
See Also