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


Приложение MOUSENC - часть 2


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

Функция главного окна определена в файле wndproc.cpp (листинг 6.5).

Листинг 6.5. Файл mousenc\wndproc.cpp

// ===================================== // Функция WndProc // =====================================

#define STRICT #include <windows.h>

LRESULT CALLBACK _export WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { HDC hdc; WORD xPosScr, yPosScr, nSizeScr; WORD xPos, yPos, nSize; BYTE szBuf[80];

static TEXTMETRIC tm; static int cxChar, cyChar;

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);

return 0; }

case WM_NCHITTEST: { // Если убрать знак комментария со следующей // строки, окно можно будет передвигать не только // при помощи заголовка окна, но и просто // установив курсор мыши в любую область окна

// return HTCAPTION;

// Сохраняем координаты курсора мыши xPosScr = LOWORD(lParam); yPosScr = HIWORD(lParam);

hdc = GetDC(hwnd);

// Подготавливаем текстовую строку, содержащую // координаты курсора мыши nSize = wsprintf(szBuf, "(%-3d, %-3d)", xPosScr, yPosScr);

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

// Выводим экранные координаты курсора мыши TextOut(hdc, cxChar, 0, szBuf, nSize);

ReleaseDC(hwnd, hdc); break; }

case WM_MOUSEMOVE: { // Сохраняем координаты курсора мыши xPos = LOWORD(lParam); yPos = HIWORD(lParam);




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



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