Ассемблер для Windows



         

Рассмотрим несколько простых консольных функций



II

Рассмотрим несколько простых консольных функций и их применение. Во-первых, работать с чужой консолью не всегда удобно. А для того чтобы создать свою консоль, используется функция AllocConsole. По завершении программы все выделенные консоли автоматически освобождаются. Однако это можно сделать и принудительно, используя функцию FreeConsole. Для того чтобы получить дескриптор консоли, используется уже знакомая Вам функция GetStdHandle, аргументом которой может являться следующая из трех констант:

STD_INPUT_HANDLE equ -10 ; для ввода

STD_OUTPUT_HANDLE equ -11 ; для вывода

STD_ERROR_HANDLE equ -12 ; для сообщения об ошибке

Следует отметить, что один процесс может иметь только одну консоль, поэтому выполнение в начале программы FreeConsole обязательно. При запуске программы в "чужой" консоли она наследует эту консоль, поэтому, пока мы не выполним функцию FreeConsole, новой консоли не создать - чужой консоли эта функция закрыть не может.

Для чтения из буфера консоли используется функция ReadConsole. Значения параметров этой функции (слева-направо)28 следующие:

  • 1-й, дескриптор входного буфера.
  • 2-й, адрес буфера, куда будет помещена вводимая информация.
  • 3-й, длина этого буфера.
  • 4-й, количество фактически прочитанных символов.
  • 5-й, зарезервировано.
  • Установить позицию курсора в консоли можно при помощи функции SetConsoleCursorPosition со следующими параметрами:

    • 1-й, дескриптор входного буфера консоли.
    • 2-й, структура COORD:
    • COORD STRUC Х WORD ? Y WORD ? COORD ENDS

      Хочу лишний раз подчеркнуть, что вторым параметром является не указатель на структуру (что обычно бывает), а именно структура. На самом деле для ассемблера это просто двойное слово (DWORD), у которого младшее слово - координата X, а старшее слово — координата Y.

      Установить цвет выводимых букв можно с помощью функции SetConsoleTextAttribute. Первым параметром этой функции является дескриптор выходного буфера консоли, а вторым - цвет букв и фона. Цвет получается путем комбинации (сумма или операция "ИЛИ") двух или более из представленных ниже констант. Причем возможна "смесь" не только цвета и интенсивности, но и цветов (см. программа ниже).




      Содержание  Назад  Вперед