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


Определение размера окна - часть 3


Поэтому мы не будем его описывать, а перейдем сразу к функции окна (листинг 4.10).

Листинг 4.10. Файл wsize\wndproc.cpp

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

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

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

static WPARAM fwSizeType; static WORD nWidth; static WORD nHeight;

switch (msg) { case WM_PAINT: { char buf[80];

hdc = BeginPaint(hwnd, &ps);

sprintf(buf, "%4.4dx%4.4d (%1.1d)", nWidth, nHeight, fwSizeType);

// Выводим размеры окна TextOut(hdc, 0, 0, buf, 13);

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

case WM_SIZE: { // Способ изменения размера окна fwSizeType = wParam;

// Ширина внутренней области окна nWidth = LOWORD(lParam);

// Высота внутренней области окна nHeight = HIWORD(lParam);

// Отмечаем все окно как требующее // обновления InvalidateRect(hwnd, NULL, TRUE);

// Посылаем себе сообщение WM_PAINT UpdateWindow(hwnd); return 0; }

case WM_LBUTTONDOWN: { RECT rcWndSize; char buf[80];

hdc = GetDC(hwnd);

// Определяем размеры внутренней // области окна GetClientRect(hwnd, &rcWndSize);

sprintf(buf, "%4.4dx%4.4d", rcWndSize.right, rcWndSize.bottom);

// Выводим размеры внутренней области окна TextOut(hdc, 0, 20, buf, 9);

ReleaseDC(hwnd, hdc); return 0; }

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

В области данных функции окна определены статические переменные, предназначенные для хранения размера окна и способа изменения этих размеров (о способах изменения размеров окна мы расскажем немного позже):

static WPARAM fwSizeType; static WORD nWidth; static WORD nHeight;

При обработке сообщения WM_PAINT содержимое этих переменных выводится в левом верхнем углу окна.


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



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