Операционная система Microsoft Windows 3.1 для программиста. Дополнительные главы


Листинг 4.7. Файл hlpmore/hlpmore.cpp - часть 2


wc.lpszMenuName = NULL; wc.lpfnWndProc = (WNDPROC) EWWndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hModule; wc.hIcon = NULL; wc.hCursor = LoadCursor(hModule, "AppCursor"); wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); wc.lpszClassName = (LPSTR)szClassName;

aWndClass = RegisterClass(&wc); return (aWndClass != 0); }

// ======================================================== // Функция EWWndProc // Функция встроенного окна // ======================================================== extern "C" LRESULT CALLBACK _export EWWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; RECT rc; TEXTMETRIC tm; int cxChar, cyChar; QCI qci; QRI qri; static BYTE szCustomData[80]; static BYTE szBuf[80];

#define CLOCK_TIMER 1

switch (msg) { // Создание встроенного окна case WM_CREATE: { // Копируем строку параметров qci = (QCI)((CREATESTRUCT FAR *)lParam)->lpCreateParams; if(lstrlen(qci->szAuthorData) < 80) lstrcpy(szCustomData, qci->szAuthorData);

// Добавляем к встроенному окну рамку SetWindowLong(hwnd, GWL_STYLE, GetWindowLong(hwnd,GWL_STYLE) | WS_BORDER);

// Создаем таймер для часов SetTimer(hwnd, CLOCK_TIMER, 1000, NULL); return 0; }

// Сообщение от таймера case WM_TIMER: { // Перерисовываем встроенное окно InvalidateRect(hwnd, NULL, FALSE); return 0; }

// Обработчик сообщения WM_PAINT case WM_PAINT: { int nBufSize; time_t t; struct tm *ltime; RECT rc;

hdc = BeginPaint(hwnd, &ps);

// Определяем время и его отдельные компоненты time(&t); ltime = localtime(&t);

// Подготавливаем буфер, заполняя его // строкой с текущим временем nBufSize = wsprintf(szBuf, "%02d:%02d:%02d", ltime->tm_hour, ltime->tm_min, ltime->tm_sec);

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

// Получаем координаты и размер окна GetClientRect(hwnd, &rc);

// Выбираем цвет текста для часов SetTextColor(ps.hdc, RGB(0,100,0));

// Выводим время в центре окна DrawText(hdc, (LPSTR)szBuf, nBufSize, &rc, DT_CENTER | DT_VCENTER | DT_NOCLIP | DT_SINGLELINE);




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



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