Для иллюстрации всего сказанного выше в этой главе мы приведем исходные тексты приложения TEXTOUT. В своем главном окне это приложение отображает строку Hello, PM!. Кроме того, если делать щелчки левой клавишей мыши в окне приложения, то в месте расположения курсора мыши будут отображаться его координаты (4.1).
4.1. Главное окно приложения TEXTOUT
Исходные тексты приложения представлены в листинге 4.1.
Листинг 4.1. Файл textout\textout.c
// ================================================= // Определения // =================================================
switch (msg) { // В ответ на это сообщение рисуем в // окне Client Window case WM_PAINT : { // Получаем пространство отображения hps = WinBeginPaint (hWnd, NULLHANDLE, &rec);
// Закрашиваем область, требующую обновления WinFillRect (hps, &rec, CLR_WHITE);
// Рисуем текстовую строку, начиная с точки, // имеющей координаты (10, 10) ptl.x = 10L; ptl.y = 10L; GpiCharString At (hps, &ptl, 10, "Hello, PM!");
// Освобождаем пространство отображения WinEndPaint (hps); return 0; }
// При изменении размеров окна приложения // перерисовываем его содержимое case WM_SIZE : { WinInvalidateRect (hWnd, NULL, TRUE); return 0; }
// Если пользователь сделал щелчок левой клавишей // мыши в окне приложения, в месте расположения // курсора мыши отображаем координаты этого курсора case WM_BUTTON1DOWN : { // Получаем пространство отображения hps = WinGetPS (hWnd);
// Определяем координаты курсора мыши и // записываем их в виде текстовой строки // во временный буфер sprintf (szMsg, "(x, y) = (%ld, %ld)", SHORT1FROMMP (mp1), SHORT2FROMMP (mp1));
// Определяем координаты точки для вывода текста ptl.x = SHORT1FROMMP (mp1); ptl.y = SHORT2FROMMP (mp1);
// Определяем размер текстовой строки nMsgSize = strlen(szMsg);
// Рисуем текстовую строку GpiCharString At (hps, &ptl, nMsgSize, szMsg);
// Освобождаем пространство отображения WinReleasePS (hps); return 0; }