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


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


#define STRICT #include <windows.h> #include <stdio.h> #include <string.h>

void PrintMsg(HWND, WPARAM, LPARAM, char *);

static int cxChar, cyChar; RECT rect;

LRESULT CALLBACK _export WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { HDC hdc; // индекс контекста устройства PAINTSTRUCT ps; // структура для рисования static TEXTMETRIC tm; // структура для записи метрик // шрифта

switch (msg) { case WM_CREATE: { // Получаем контекст отображения, // необходимый для определения метрик шрифта hdc = GetDC(hwnd);

// Выбираем шрифт с фиксированной шириной букв SelectObject(hdc, GetStockObject(SYSTEM_FIXED_FONT));

// Заполняем структуру информацией // о метрике шрифта, выбранного в // контекст отображения GetTextMetrics(hdc, &tm);

// Запоминаем значение ширины для // самого широкого символа cxChar = tm.tmMaxCharWidth;

// Запоминаем значение высоты букв с // учетом межстрочного интервала cyChar = tm.tmHeight + tm.tmExternalLeading;

// Освобождаем контекст ReleaseDC(hwnd, hdc);

// Задаем верхнюю границу несвертываемой // области окна. Эта область будет использована // для двух строк заголовка rect.top = 3 * cyChar;

return 0; }

case WM_SIZE: { // Сохраняем координаты нижнего правого // угла окна rect.right = LOWORD(lParam); rect.bottom = HIWORD(lParam);

// Перерисовываем все окно InvalidateRect(hwnd, NULL, TRUE); UpdateWindow(hwnd);

return 0; }

case WM_PAINT: { // Две строки заголовка сообщений char szHead1[] = "Message Char wParam lParam KeyName"; char szHead2[] = "------- ---- ------ ------ -------";

hdc = BeginPaint(hwnd, &ps);

// Выбираем шрифт с фиксированной шириной букв SelectObject(hdc, GetStockObject(SYSTEM_FIXED_FONT));

// Выводим строки заголовка TextOut(hdc, cxChar, cyChar/2, szHead1, sizeof(szHead1) - 1); TextOut(hdc, cxChar, cyChar/2 + cyChar, szHead2, sizeof(szHead2) - 1);

EndPaint(hwnd, &ps); return 0; }

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




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



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