Приложение TMCLOCK
Приложение TMCLOCK представляет собой простейшие часы с цифровой индикацией системным шрифтом с фиксированной шириной символов. Это приложение демонстрирует использование функции таймера, а также способ обработки сообщения WM_NCHITTEST, позволяющий изменять размеры и расположение окна, не имеющего заголовка, системного меню и кнопок изменения размера.
Главный файл приложения, содержащий функцию WinMain, представлен в листинге 7.4.
Листинг 7.4. Файл tmclock\tmclock.cpp
// ---------------------------------------- // Простейшие часы // ----------------------------------------
#define STRICT #include <windows.h> #include <mem.h>
BOOL InitApp(HINSTANCE); LRESULT CALLBACK _export WndProc(HWND, UINT, WPARAM, LPARAM);
char const szClassName[] = "TMCLOCKAppClass"; char const szWindowTitle[] = "TMCLOCK Application";
TEXTMETRIC tm; int cxChar, cyChar; RECT rc;
// ===================================== // Функция WinMain // ===================================== #pragma argsused
int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow) { MSG msg; // структура для работы с сообщениями HWND hwnd; // идентификатор главного окна приложения
if(!InitApp(hInstance)) return FALSE;
// Получаем координаты окна Desktop. // Это окно занимает всю поверхность экрана, // и на нем расположены все остальные окна GetWindowRect(GetDesktopWindow(), &rc);
// Создаем временное окно с толстой // рамкой для изменения размера, но без // заголовка и системного меню. // При создании окна указываем произвольные // размеры окна и произвольное расположение hwnd = CreateWindow( szClassName, szWindowTitle, WS_POPUPWINDOW | WS_THICKFRAME, 100, 100, 100, 100, 0, 0, hInstance, NULL);
if(!hwnd) return FALSE;
// Передвигаем окно в правый нижний // угол экрана MoveWindow(hwnd, rc.right - cxChar * 15, rc.bottom - cyChar * 3, cxChar * 10, cyChar * 2, TRUE);
// Отображаем окно в новом месте ShowWindow(hwnd, nCmdShow); UpdateWindow(hwnd);