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


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


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

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

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

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

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

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

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

case WM_DESTROY: { PostQuitMessage(0); return 0; } } return DefWindowProc(hwnd, msg, wParam, lParam); }

// ========================================== // Функция для вывода параметров сообщений // от клавиатуры в окно // ==========================================

void PrintMsg(HWND hwnd, WPARAM wParam, LPARAM lParam, char *szMsg) { HDC hdc; char szBuf[256]; char szKeyName[20]; int nBufSize; int rc;

// Сворачиваем часть окна, не занятую заголовком ScrollWindow(hwnd, 0, -cyChar, &rect, &rect);

hdc = GetDC(hwnd);

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

// Получаем имя клавиши, определенное в // драйвере клавиатуры rc = GetKeyNameText(lParam, szKeyName, 20); if(!rc) MessageBeep(0);

// Подготавливаем строку, описывающую сообщение nBufSize = wsprintf(szBuf, "%-14s %c %02x %08lX %-20s", (LPSTR)szMsg, (BYTE)wParam, (BYTE)wParam, lParam, (LPSTR)szKeyName);

// Выводим строку в нижнюю часть окна TextOut(hdc, cxChar, rect.bottom - cyChar, szBuf, nBufSize);

ReleaseDC(hwnd, hdc);

// Удаляем всю внутреннюю часть окна из // списка областей, требующих обновления ValidateRect(hwnd, NULL); }

При создании главного окна приложения (функцией CreateWindow) функция окна получает сообщение WM_CREATE. Наш обработчик этого сообщения создает контекст отображения и выбирает в него системный шрифт с фиксированной шириной букв, для чего вызывает функции GetStockObject и SelectObject:




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



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