WriteConsoleOutput
The WriteConsoleOutput
function writes character and color attribute data to a specified rectangular
block of character cells in a console screen buffer. The data to be written is
taken from a correspondingly sized rectangular block at a specified location in
the source buffer.
BOOL WriteConsoleOutput(
HANDLE hConsoleOutput, |
// handle to a
console screen buffer |
CONST CHAR_INFO *lpBuffer, |
// pointer to
buffer with data to write |
COORD dwBufferSize, |
// column-row size
of source buffer |
COORD dwBufferCoord, |
// upper-left cell
to write from |
PSMALL_RECT lpWriteRegion |
// pointer to
rectangle to write to |
); |
|
Parameters
hConsoleOutput
Identifies
the screen buffer. The handle must have GENERIC_WRITE access.
lpBuffer
Points to a
source buffer that contains the data to be written to the screen buffer. This
pointer is treated as the origin of a two-dimensional array of CHAR_INFO
dwBufferSize
Specifies the
size, in character cells, of the buffer pointed to by the lpBuffer
parameter. The X member of the COORD
dwBufferCoord
Specifies the
coordinates of the upper-left cell in the buffer pointed to by the lpBuffer
parameter to write data from. The X member of the COORD
lpWriteRegion
Points to a SMALL_RECT
Return Values
If the
function succeeds, the return value is nonzero.
If the
function fails, the return value is zero. To get extended error information,
call GetLastError
Remarks
WriteConsoleOutput treats the source buffer and the destination screen
buffer as two-dimensional arrays (columns and rows of character cells). The
rectangle pointed to by the lpWriteRegion parameter specifies the size
and location of the block to be written to in the screen buffer. A rectangle of
the same size is located with its upper-left cell at the coordinates of the dwBufferCoord
parameter in the lpBuffer array. Data from the cells that are in the
intersection of this rectangle and the source buffer rectangle (whose
dimensions are specified by the dwBufferSize parameter) is written to
the destination rectangle.
Cells in the
destination rectangle whose corresponding source location are outside the
boundaries of the source buffer rectangle are left unaffected by the write
operation. In other words, these are the cells for which no data is available
to be written.
Before WriteConsoleOutput
returns, it sets the members of lpWriteRegion to the actual screen
buffer rectangle affected by the write operation. This rectangle reflects the
cells in the destination rectangle for which there existed a corresponding cell
in the source buffer, because WriteConsoleOutput clips the dimensions of
the destination rectangle to the boundaries of the screen buffer.
If the
rectangle specified by lpWriteRegion lies completely outside the
boundaries of the screen buffer, or if the corresponding rectangle is
positioned completely outside the boundaries of the source buffer, no data is
written. In this case, the function returns with the members of the structure
pointed to by the lpWriteRegion parameter set such that the Right
member is less than the Left, or the Bottom member is less than
the Top. To determine the size of the screen buffer, use the GetConsoleScreenBufferInfo
function.
WriteConsoleOutput has no effect on the cursor position.
Windows
NT: This function uses either Unicode
characters or 8-bit characters from the console's current codepage. The
console's codepage defaults initially to the system's OEM codepage. To change
the console's codepage, use the SetConsoleCP or SetConsoleOutputCP
functions, or use the chcp or mode con cp select= commands.
See Also