Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СПО_лабораторные работы_часть 1.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
397.04 Кб
Скачать

4. Отображение окон на экране.

Для того, чтобы вновь созданное окно стало видимым, требуется вызвать функцию ShowWindow(HWND hWnd, int nCmdShow), параметрами которой являются дескриптор окна (hWnd) и способ показа (nCmdShow). В моём случае эта функция выглядит так:

ShowWindow(hWnd, SW_SHOW)

SW_SHOW – активизирует окно в текущих размерах и позиции; SW_SHOWNORMAL – активизирует и отображает окно в первоначальной позиции и размерах; SW_HIDE – скрывает окно и др.

5. Управление положением и размерами окна

Для перемещения и изменения размеров окна вызывают функцию MoveWindow. Ей передают новые координаты окна и его размеры.

MoveWindow(hWnd, rt.left-20, rt.top, rt.right-rt.left, rt.bottom-rt.top, TRUE);

Последний параметр означает, что после перемещения перерисовываются те части экрана, на которых отразилось перемещение окна.

Функция SetWindowPos(hWndSub,HWND_BOTTOM, 20, 20, 100, 100, SWP_SHOWWINDOW) изменяет координаты окна и его положение по отношению к другим окнам.

Функция GetWindowRect(hWnd, &rt) позволяет получить координаты обрамляющего окно hWnd прямоугольника.

6. Обновление оконной области на экране.

Когда необходимо перерисовка окна или его части, Windows посылает приложение сообщение WM_PAINT, в ответ на которое программа должна перерисовать только свою внутреннюю часть, называемую рабочей областью. Для того, чтобы приложение само спровоцировало посылку данного сообщения необходимо использовать функцию BOOL UpdateWindow(HWND hWnd ), которая немедленно посылает окну сообщение wm_Paint, минуя очередь приложения. Область обновления окна в момент вызова функции должна быть непустой, иначе сообщение wm_Paint послано не будет.

7. Установка фона.

В качестве кисти фона можно использовать чистые цвета или пиктограмму. Чаще используют значение системного цвета плюс 1. Цвета преобразуют в тип HB_BRUSH. Например, следующий оператор устанавливает системный цвет закрашивания фона wcex.hbrBackground=(HBRUSH)(COLOR_WINDOW+1). Система сама удаляет кисть фона при освобождении класса. Если указать NULL, то система сама будет окрашивать фон. Можно использовать функцию CreateSolidBrush (rgbColor).

CreateSolidBrush(RGB(192,220,192)).

Solid означает , что создается кисть, имеющая чистый цвет. Вы можете также создать штриховую кисть (hatch), состоящую из горизонтальных, вертикальных или диагональных линий.

Можно динамически изменить цвет фона:

SetClassLong(hWnd,GCL_HBRBACKGROUND,(LONG)CreateSolidBrush(RGB(0,0,0)));

8. Курсор приложения. Типы курсоров, их прикрепление к приложению.

Ресурс курсора загружают функцией LoadCursor(NULL, IDC_ARROW). NULL означает загрузку стандартного курсора, IDC_ARROW – курсор в виде стандартной стрелки. Также второй параметр может принимать и другие значения, например, IDC_NOW – перечёркнутый круг, IDC_WAIT- песочные часы и т. д.

В процессе можно изменить курсор с помощью функции SetCursor(), установить координаты курсора SetCursorPos(x,y).

9. Цикл обработки сообщений

Состоит из управляющей структуры while, которая при каждом проходе цикла получает очередное сообщение из очереди, посредством функции GetMessage(), затем переводит все сообщения от виртуальных клавиш в символьные сообщения с помощью функции TranslateMessage(), и после этого отсылает полученное сообщение на обработку оконной процедуре, используя функцию DispatchMessage

while (GetMessage(&msg, NULL, 0, 0))

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}.