Операционная система Microsoft Windows 3.1 для программиста -том 1


Приложение KBMSG - часть 6


Обработчик сообщения WM_PAINT выбирает в контекст отображения системный шрифт с фиксированной шириной букв и выводит две строки заголовка. Этим его функции и ограничиваются.

Далее в исходном тексте функции окна расположены несколько обработчиков для клавиатурных сообщений. Все они вызывают функцию PrintMsg, отображающую параметры сообщения, вслед за чем передают сообщение функции DefWindowProc:

case WM_KEYDOWN: { PrintMsg(hwnd, wParam, lParam, "WM_KEYDOWN"); break; }

Таким образом, сообщения от клавиатуры не изымаются приложением, оно только "подсматривает" за ними.

Отображение параметров сообщения выполняется функцией PrintMsg, определенной в нашем приложении.

Кроме идентификатора окна, нужного для свертки окна и получения контекста отображения, функции PrintMsg передаются параметры сообщения и текстовая строка символического имени сообщения.

Функция PrintMsg начинает свою работу со свертки окна для освобождения в его нижней части места для вывода параметров очередного сообщения:

ScrollWindow(hwnd, 0, -cyChar, &rect, &rect);

Для свертки окна используется функция ScrollWindow, входящая в состав программного интерфейса Windows:

void WINAPI ScrollWindow(HWND hwnd, int dx, int dy, const RECT FAR* lprcScroll, const RECT FAR* lprcClip);

Первый параметр (hwnd) этой функции определяет идентификатор сворачиваемого окна.

Второй (dx) и третий (dy) парамеры определяют величину сдвига при свертке соответственно по горизонтали и вертикали. Для свертки влево и вверх параметры должны иметь отрицательное значение, для свертки вправо и вниз - положительное. В нашем случае окно сворачивается только в верхнем направлении, поэтому второй параметр равен нулю, а третий задает сдвиг на высоту буквы.

Четвертый параметр (lprcScroll) определяет прямоугольный участок внутренней области окна, подлежащей свертке. В нашем случае это нижняя часть окна (верхняя часть используется для вывода двух строк заголовка).

Пятый параметр (lprcClip) задает ограничивающую область, внутри которой выполняется сдвиг.


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



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