Программирование для IBM OS2


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


return(-1); }

// Создаем главное окно приложения hWndFrame = WinCreateStdWindow (HWND_DESKTOP, WS_VISIBLE , &flFrameFlags, szWndClass, szAppTitle, 0, 0, ID_APP_FRAMEWND, &hWndClient); if(hWndFrame == NULLHANDLE) { WinMessageBox (HWND_DESKTOP, HWND_DESKTOP, "Ошибка при создании главного окна", "Ошибка", 0, MB_ICONHAND | MB_OK); WinDestroyMsgQueue (hmq); WinTerminate (hab);

return(-1); }

while(WinGetMsg (hab, &qmsg, 0, 0, 0)) WinDispatchMsg (hab, &qmsg);

WinDestroyWindow(hWndFrame); WinDestroyMsgQueue (hmq); WinTerminate (hab); return(0); }

// ================================================= // Функция главного окна приложения // =================================================

MRESULT EXPENTRY WndProc(HWND hWnd, ULONG msg, MPARAM mp1, MPARAM mp2) { CHAR szMsg[100]; int nMsgSize; HPS hps; POINTL ptl; RECTL rec;

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

// Позволяем окну Frame Window стереть содержимое // окна Client Window case WM_ERASEBACKGROUND : return(MRFROMLONG(1L));

// При изменении размеров окна приложения // перерисовываем его содержимое 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; }

default: return(WinDefWindowProc (hWnd, msg, mp1, mp2)); } }




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