- •Системное программное обеспечение
- •1 40 01 01 “Программное обеспечение информационных технологий”
- •1 40 01 02 “Информационные системы и технологии”
- •Содержание
- •Часть 1 3
- •Часть 1 Лабораторная работа № 1 Простейшее приложение на базе win32 api
- •1.2 Постановка задачи: Выбор варианта!
- •1.3 Теоретические сведения:
- •1. Структура оконного класса, поля, их назначение, инициализация.
- •2. Классы окон, регистрация оконного класса.
- •3. Создание экземпляра оконного класса.
- •4. Отображение окон на экране.
- •5. Управление положением и размерами окна
- •6. Обновление оконной области на экране.
- •7. Установка фона.
- •8. Курсор приложения. Типы курсоров, их прикрепление к приложению.
- •9. Цикл обработки сообщений
- •10. Оконная функция
- •Лабораторная работа № 2 Программирование внешних устройств
- •2.2 Постановка задачи:
- •2.3 Теоретические сведения:
- •1. Механизм сообщений от клавиатуры
- •2. Коды oem, ansi, ascii, виртуальные коды
- •3. Виртуальные клавиши
- •4. Символьные сообщения
- •1. Захват и освобождение окном мыши
- •2. Обработка сообщений от мыши
- •3. Координаты X,y
- •1. Установка таймера
- •2. Функция таймера
- •Лабораторная работа № 3 Диалоги и элементы управления
- •3.2 Постановка задачи:
- •3.3 Теоретические сведения:
- •3.3.1 Модальное диалоговое окно
- •3.3.2 Немодальное диалоговое окно
- •3.3.3 Процедура диалогового окна
- •3.3.4 Элементы управления диалогового окна
- •3.3.5 Принципы работы с элементами управления
- •3.3.6 Класс “edit”
- •3.3.7 Класс “listbox”
- •3.3.7. Класс “ combobox ”
- •3.3.8 Корректность вводимых данных.
- •3.3.9 Окна сообщений. Использование окон сообщений.
- •Лабораторная работа № 4 Работа с файлами.
- •4.2. Постановка задачи:
- •4.3 Теоретические сведения:
- •Создание текстового файла. Запись в текстовый файл.
- •Литература
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);
}.
