Прочитать на английском

Поделиться через


Функция WriteConsole

Записывает строку символов в буфер экрана консоли, начиная с текущего положения курсора.

Синтаксис

BOOL WINAPI WriteConsole(
  _In_             HANDLE  hConsoleOutput,
  _In_       const VOID    *lpBuffer,
  _In_             DWORD   nNumberOfCharsToWrite,
  _Out_opt_        LPDWORD lpNumberOfCharsWritten,
  _Reserved_       LPVOID  lpReserved
);

Параметры

hConsoleOutput [ввод]
Дескриптор буфера экрана консоли. У дескриптора должно быть право на доступ GENERIC_WRITE. Дополнительные сведения см. в статье Безопасность и права доступа для буфера консоли.

lpBuffer [ввод]
Указатель на буфер, содержащий символы для записи в буфер экрана консоли. Предполагается, что это массив char для WriteConsoleA или wchar_t для WriteConsoleW.

nNumberOfCharsToWrite [ввод]
Количество записываемых символов. Если общий размер указанного количества символов превышает доступную кучу, функция завершается ошибкой ERROR_NOT_ENOUGH_MEMORY.

lpNumberOfCharsWritten [вывод, необязательный]
Указатель на переменную, которая получает количество фактически записанных символов.

lpReserved Зарезервировано; должно быть значение NULL.

Возвращаемое значение

Если функция выполняется успешно, возвращается ненулевое значение.

Если функция выполняется неудачно, возвращается нулевое значение. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.

Замечания

Функция WriteConsole записывает символы в буфер экрана консоли в текущем положении курсора. Курсор передвигается по мере написания символов. Функция SetConsoleCursorPosition задает текущее положение курсора.

Символы записываются с помощью атрибутов цвета переднего плана и фона, связанных с буфером экрана консоли. Функция SetConsoleTextAttribute изменяет эти цвета. Чтобы определить текущие атрибуты цвета и текущее положение курсора, используйте GetConsoleScreenBufferInfo.

Все режимы ввода, влияющие на поведение функции WriteFile, действуют так же на WriteConsole. Чтобы получить и установить режимы вывода буфера экрана консоли, используйте функции GetConsoleMode и SetConsoleMode.

Эта функция использует либо символы Юникода, либо 8-разрядные символы из текущей кодовой страницы консоли. Кодовая страница консоли по умолчанию изначально соответствует кодовой странице OEM системы. Чтобы изменить кодовую страницу консоли, используйте функции SetConsoleCP или SetConsoleOutputCP. Пользователи прежних версий могут также использовать команды chcp или mode con cp select= (но это не рекомендуется для новой разработки).

WriteConsole завершается ошибкой, если используется со стандартным дескриптором, который перенаправляется в файл. Если приложение обрабатывает многоязычный вывод, который можно перенаправить, определите, является ли дескриптор вывода дескриптором консоли (один метод заключается в вызове функции GetConsoleMode и проверке успешности ее выполнения). Если дескриптор является дескриптором консоли, вызовите WriteConsole. Если дескриптор не является дескриптором консоли, вывод перенаправляется и для выполнения операций ввода-вывода следует вызвать WriteFile. Обязательно добавьте в обычный текстовый файл в Юникоде метку порядка следования байтов в качестве префикса. Дополнительные сведения см. в статье Использование меток порядка следования байтов.

Несмотря на то что приложение может использовать WriteConsole в режиме ANSI для записи символов ANSI, консоли не поддерживают последовательности escape-кодов ANSI или виртуальных терминалов, если они не включены. Дополнительные сведения, а также информацию о применимости к версии операционной системы см. в статье Последовательности виртуального терминала в консоли.

Если escape-последовательности виртуального терминала не включены, функции консоли могут обеспечить эквивалентную функциональность. Дополнительные сведения см. в статьях о функциях SetCursorPos, SetConsoleTextAttribute и GetConsoleCursorInfo.

Requirements

   
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Верхний колонтитул ConsoleApi.h (через WinCon.h, включая Windows.h)
Библиотека Kernel32.lib
DLL-библиотеки Kernel32.dll
Имена Юникода и ANSI WriteConsoleW (Юникод) и WriteConsoleA (ANSI)

См. также

Функции консоли

GetConsoleCursorInfo

GetConsoleMode

GetConsoleScreenBufferInfo

Методы ввода и вывода

ReadConsole

SetConsoleCP

SetConsoleCursorPosition

SetConsoleMode

SetConsoleOutputCP

SetConsoleTextAttribute

SetCursorPos

WriteFile