Click to Rate and Give Feedback
MSDN
MSDN Library
Windows GDI
Fonts and Text
 TextOut
Windows GDI
TextOut

The TextOut function writes a character string at the specified location, using the currently selected font, background color, and text color.

BOOL TextOut(
  HDC hdc,           // handle to DC
  int nXStart,       // x-coordinate of starting position
  int nYStart,       // y-coordinate of starting position
  LPCTSTR lpString,  // character string
  int cbString       // number of characters
);

Parameters

hdc
[in] Handle to the device context.
nXStart
[in] Specifies the x-coordinate, in logical coordinates, of the reference point that the system uses to align the string.
nYStart
[in] Specifies the y-coordinate, in logical coordinates, of the reference point that the system uses to align the string.
lpString
[in] Pointer to the string to be drawn. The string does not need to be zero-terminated, since cbString specifies the length of the string.
cbString
[in] Specifies the length of the string pointed to by lpString.

Windows 95/98/Me: This value may not exceed 8192.

Return Values

If the function succeeds, the return value is nonzero.

If the function fails, the return value is zero.

Remarks

Although not true in general, Windows 95/98/Me supports the Unicode version of this function as well as the ANSI version.

The interpretation of the reference point depends on the current text-alignment mode. An application can retrieve this mode by calling the GetTextAlign function; an application can alter this mode by calling the SetTextAlign function.

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 the system to use and update the current position each time the application calls TextOut for a specified device context. When this flag is set, the system ignores the nXStart and nYStart parameters on subsequent TextOut calls.

When the TextOut function is placed inside a path bracket, the system generates a path for the TrueType text that includes each character plus its character box. The region generated is the character box minus the text, rather than the text itself. You can obtain the region enclosed by the outline of the TrueType text by setting the background mode to transparent before placing the TextOut function in the path bracket. Following is sample code that demonstrates this procedure.

// Obtain the window's client rectangle
GetClientRect(hwnd, &r);

// THE FIX: by setting the background mode
// to transparent, the region is the text itself
// SetBkMode(hdc, TRANSPARENT);

// Bracket begin a path
BeginPath(hdc);

// Send some text out into the world
TCHAR text[ ] = "Defenestration can be hazardous";
TextOut(hdc,r.left,r.top,text, ARRAYSIZE(text));

// Bracket end a path
EndPath(hdc);

// Derive a region from that path
SelectClipPath(hdc, RGN_AND);

// This generates the same result as SelectClipPath()
// SelectClipRgn(hdc, PathToRegion(hdc));

// Fill the region with grayness
FillRect(hdc, &r, GetStockObject(GRAY_BRUSH));

Windows 95/98/Me: Although TextOutW exists on Windows 95/98/Me, it is supported by the Microsoft Layer for Unicode to provide more consistent behavior across all Windows operating systems. To use this, you must add certain files to your application, as outlined in Microsoft Layer for Unicode on Windows 95/98/Me Systems.

Example Code

For an example, see Enumerating the Installed Fonts.

Requirements

  Windows NT/2000/XP/Vista: Included in Windows NT 3.1 and later.
  Windows 95/98/Me: Included in Windows 95 and later.
  Header: Declared in Wingdi.h; include Windows.h.
  Library: Use Gdi32.lib.
  Unicode: Implemented as Unicode and ANSI versions on all platforms. Also supported by Microsoft Layer for Unicode.

See Also

Fonts and Text Overview, Font and Text Functions, GetTextAlign, SelectObject, SetBkColor, SetTextAlign, SetTextColor, TabbedTextOut


Tags What's this?: Add a tag
Community Content   What is Community Content?
Add new content RSS  Annotations
DrawText and TextOut are sensitive to memory aligment when drawing to a DIBSection      SteelBytes   |   Edit   |  
DrawTextW on 2000 and XP will not render to a DIBSection if the string is not WCHAR aligned in memory. But it does work in Vista.
TextOutW will not render to a DIBSection when the string is non WCHAR aligned on any of 2000, XP or Vista.
Both DrawTextW and TextOutW work find when drawing to either a screen DC or a printer DC on all three Windows flavours.

see http://louis.steelbytes.com/DrawTextBug.html for more info
Tags What's this?: Add a tag
Flag as ContentBug
Complicated C++      janofano ... 1xieixie   |   Edit   |  

I have copyied the text above and as usual, there appear some errors.


Here it is:

------ Build started: Project: Novy, Configuration: Release Win32 ------

Compiling...

Novy.cpp

.\Novy.cpp(161) : error C2440: 'initializing' : cannot convert from 'const char [32]' to 'TCHAR []'

There is no context in which this conversion is possible

.\Novy.cpp(162) : error C2893: Failed to specialize function template 'char (*RtlpNumberOf(T (&)[N]))[N]'

With the following template arguments:

'TCHAR'

.\Novy.cpp(165) : error C2360: initialization of 'text' is skipped by 'case' label

.\Novy.cpp(161) : see declaration of 'text'

.\Novy.cpp(168) : error C2361: initialization of 'text' is skipped by 'default' label

.\Novy.cpp(161) : see declaration of 'text'

Build log was saved at "file://d:\Janko's Documents\Visual Studio 2008\Projects\Novy\Release\BuildLog.htm"

Novy - 4 error(s), 0 warning(s)

  1. ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Processing
© 2008 Microsoft Corporation. All rights reserved. Terms of Use  |  Trademarks  |  Privacy Statement
Page view tracker