Азбука программирования в Win32 API


Азбука программирования в Win32 API - стр. 215


strlen(cMyString), &dwResult, NULL); SetConsoleTextAttributefhStdOutputHandle,

FOREGROUND_RED | BACKGROUND_RED | BACKGROUND_BLUE | BACKGROUNDJ3REEN | FOREGROUNDJNTENSITY);

ReadConsolefhStdlnputHandle, cMyString, strlen(cMyString), &dwResult, NULL); return 0;

257

Окно, отображаемое при запуске программы, показало на рис

5 Сонм» yemomuation pcogi

Рис. 21. Окно-консоль, в которое иронзвелен выно.; счроки

Ничего особенного в этой программе не происходи1! Программа за­прашивает собственную консоль и устанавливает заголовок этой консоли, после чего получаст хэндл' потоков ввода и вывода. Курсор устанавлива­ется с таким расчетом, чтобы выводимая фраза размещалась в центре экрана. Цвет выводимых символов устанавливается как ярко-красный на ярко-белом (на рисунке показана консоль программы именно после этого момента). После вывода фразы программа ждет нажатия-Enter, после чего затирает фразу и предлагает пользователю что-нибудь набрать на экране, завершив набор нажатием клавиши Enter. Завершение ввода пользователя означает и завершение программы. Ничего сложного, но используются все функции управления консолью, которые мы уже изучили. На долю читателя я оставляю возможность самостоятельно исследовать, какие функции ввода - вывода из стандартных библиотек С и C++ могут быть использованы в консольных программах вместо функций API. Попробуй­те, например, начать с исследования функции printf(). С другой стороны, приятной особенностью консольных программ является возможность вызова таких функций API, как, скажем, MessageBoxQ. Другими словами, при очень небольшой доработке большинство программ MS DOS могут быть перекомпилированы как консольные программы и могут использо­вать многие из тех возможностей, которые предоставляет

258

ОБРАБОТКА НАЖАТИЙ КЛАВИШ НА КЛАВИАТУРЕ И СОБЫТИЙ, ПРОИСШЕДШИХ С МЫШЬЮ

Мы уже знаем, что Windows - система, управляемая событиями. Кон­сольные программы не являются исключением. По есть одна деталь, которую необходимо ел метить. События с клавиатурой и мышью запи­сываются во входной буфе]) только в тех случаях, когда программа, во-первых, имеет клавиатурный фокус, и, во-вторых, указатель мыши нахо­дится в рабочей области консольного окна. Каждому событию, произо­шедшему с консолью, соответствует одна запись во входном буфере. Каждая запись о событии представляет собой заполненную структуру типа INPUT_RECORD, описание которой можно найти в файле vvincon.h:




Начало  Назад  Вперед



Книжный магазин