в консолі
Функції роботи з текстом високого рівня не дають інших можливостей роботи з клавіатурою, окрім як примітивного введення тексту. При розробці програм текстового режиму часто потрібна інформація про стан керуючих клавіш, про факт утримання клавіші, що може свідчити про бажання користувача повторити введення деякого символу або просто про бажання отримати тривіальний скан-код клавіші. Ці та інші події клавіатури доступні програмі за допомогою функції ReadConsolelnput. Події клавіатури генеруються при натисканні будь-якої клавіші. Процес їх обробки аналогічний обробці подій миші. У першу чергу заповнюється про натискання деяких керуючих клавіш. Для всіх інших клавіш просто фіксується факт натискання. При цьому необхідно пам'ятати, що одноразове натиснення кнопки реально відповідають дві події - натиснення і відпуск клавіші. У зв'язку з цим програма виводить два повідомлення. На практиці цього можна уникнути, аналізуючи поле bKeyDown: bKeyDown=l, коли клавіша натиснута; bKeyDown=0, коли клавіша відпущена. Вихід з програми - при виконанні будь-яких дій з мишею.
Опис використовуваних функцій
Функція витягує дескриптор для стандартного вводу даних, стандартного виводу або стандартної помилки устройства.GetStdHandle (nStdHandle
); - стандартний пристрій, для якого дескриптор повинен бути повернений.
На вхід функції GetStdHandle має бути подана одне з наступних значень:
· STD_INPUT_HANDLE=- 10 - дескриптор стандартного вхідного потоку;
· STD_OUTPUT_HANDLE=- 11 - дескриптор стандартного вихідного потоку;
· STD_ERROR_HANDLE=- 12 - дескриптор стандартного потоку помилок.
Дескриптори, повернуті функцією GetStdHandle, можуть бути використані прикладними програмами, яким потрібно читати з консолі або записувати в консоль. Коли консоль створена, дескриптором стандартного вводу є дескриптор буфера введення консолі, а стандартного виводу і обробки стандартної помилки є дескриптор активного екранного буфера консолі. Ці дескриптори можуть бути використані функціями ReadFile lt; # justify gt; WriteConsole
Функція записує символьну рядок в екранний буфер консолі, що починається з поточної позиції курсора.
BOOL WriteConsole (hConsoleOutput, VOID * lpBuffer, nNumberOfCharsToWrite, lpNumberOfCharsWritten, lpReserved);
hConsoleOutput - дескриптор екранного буфера консолі.- покажчик на буфер, що містить символи, які будуть записані в екранний буфер консолі. Загальний розмір повинен бути менше ніж 64КБ.- число TCHARs для чтенія.- покажчик на змінну, яка приймає число фактичних записів TCHARs.- зарезервовано, повинно бути ПОРОЖНЬО (NULL).
Функція WriteConsole записує символи в екранний буфер консолі. Вона поводиться подібно функції WriteFile lt; # justify gt; SetConsoleCursorPosition
Функція встановлює позицію курсора в заданому екранному буфері консолі.
BOOL SetConsoleCursorPosition (hConsoleOutput, dwCursorPosition);- Дескриптор екранного буфера консолі.
dwCursorPosition - структура COORD lt; # justify gt; SetConsoleTitle
Функція призначена для відображення заголовка вікна консоліL SetConsolеTitle (LPCTSTR lpConsoleTitle);
Функція SetConsoleTitle має один параметр - покажчик на рядок із заголовком консолі, що закінчується нулем.
Функція відключає викликає процес від його консолі.FreeConsole (VOID);
Якщо інші процеси спільно використовують консоль, консоль не руйнується, але викликає, не може посилатися на неї.
Процес може використовувати функцію FreeConsole, щоб відключити себе від своєї поточної консолі, а потім він може викликати функцію AllocConsole lt; # justify gt; AllocConsole
Функція призначає нову консоль для викликає процесса.AllocConsole (void);
Процес може бути пов'язаний з тільки однієї консоллю, так що функція AllocConsole завершується помилкою, якщо викликає процес вже має консоль. Процес може використовувати функцію FreeConsole lt; # justify gt; CharToOemA
Функція перетворить рядок у визначений OEM набір символів.
BOOL CharToOem (lpszSrc, lpszDst
); - покажчик на Перетворювані рядок із завершальним нулем.- покажчик на буфер для транслюється рядка. Якщо функція CharToOem використовується як функція ANSI, рядок може бути перетворена на місці шляхом установки параметра lpszDst для того ж самого адресами, що і параметр lpszSrc. Цього не можна робити, якщо CharToOem використовується як шірокосімвольная (Unicode) функція.
Функція встановлює атрибути символів, ...