ReadConsoleOutput
The ReadConsoleOutput
function reads character and color attribute data from a rectangular block of
character cells in a console screen buffer, and the function writes the data to
a rectangular block at a specified location in the destination buffer.
BOOL ReadConsoleOutput(
HANDLE hConsoleOutput, |
// handle of a
console screen buffer |
PCHAR_INFO lpBuffer, |
// address of
buffer that receives data |
COORD dwBufferSize, |
// column-row size
of destination buffer |
COORD dwBufferCoord, |
// upper-left cell
to write to |
PSMALL_RECT lpReadRegion |
// address of
rectangle to read from |
); |
|
Parameters
hConsoleOutput
Identifies
the screen buffer. The handle must have GENERIC_READ access.
lpBuffer
Points to a
destination buffer that receives the data read from 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 lpBuffer parameter. The X member
of the COORD
dwBufferCoord
Specifies the
coordinates of the upper-left cell in the lpBuffer parameter that
receives the data read from the screen buffer. The X member of the COORD
structure is the column, and the Y member is the row.
lpReadRegion
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
ReadConsoleOutput treats the screen buffer and the destination buffer as
two-dimensional arrays (columns and rows of character cells). The rectangle
pointed to by the lpReadRegion parameter specifies the size and location
of the block to be read from the screen buffer. A destination rectangle of the
same size is located with its upper-left cell at the coordinates of the dwBufferCoord
parameter in the lpBuffer array. Data read from the cells in the screen
buffer source rectangle is copied to the corresponding cells in the destination
buffer. If the corresponding cell is outside the boundaries of the destination
buffer rectangle (whose dimensions are specified by the dwBufferSize
parameter), the data is not copied.
Cells in the
destination buffer corresponding to coordinates that are not within the
boundaries of the screen buffer are left unchanged. In other words, these are
the cells for which no screen buffer data is available to be read.
Before ReadConsoleOutput
returns, it sets the members of the structure pointed to by the lpReadRegion
parameter to the actual screen buffer rectangle whose cells were copied into
the destination buffer. This rectangle reflects the cells in the source
rectangle for which there existed a corresponding cell in the destination
buffer, because ReadConsoleOutput clips the dimensions of the source rectangle
to fit the boundaries of the screen buffer.
If the
rectangle specified by lpReadRegion lies completely outside the
boundaries of the screen buffer, or if the corresponding rectangle is
positioned completely outside the boundaries of the destination buffer, no data
is copied. In this case, the function returns with the members of the structure
pointed to by the lpReadRegion 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
The ReadConsoleOutput
function has no effect on the screen buffer s cursor position. The contents of
the screen buffer are not changed by the function.
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