
- •Лабораторная работа №1-3 (6 часов). Программирование в api.
- •Цель работы
- •Общие сведения
- •Типы данных Wundows
- •Основы программирования для Windows. Окна и очереди.
- •Окна Windows как объекты
- •Функция окна
- •Создание простейшего приложения FirsApp.
- •Создание каркаса приложения
- •Функция _tWinMain
- •Функция MyRegisterClass
- •Функция InitInstance
- •Функция окна WndProc()
- •Немного об отладке приложений Windows
- •Задания
- •Задание 1 – 25 баллов
- •Задание 2 – 50 баллов
- •Задание 3 – 50 баллов
- •Задание 4 – 100 баллов
-
Задания
-
Задание 1 – 25 баллов
-
Разработайте с использованием Win32 API оконное приложение, выводящее в области заголовка окна размеры окна и его клиентской области в формате: “Window: <ширина окна>x<высота окна>, Client: <ширина клиентской области>x<высота клиентской области>“
При изменении размеров окна пользователем числа в области заголовка должны менять свои значения соответствующим образом.
Ограничить минимальные размеры окна значением 300*200, а максимальные – 700*500
-
Задание 2 – 50 баллов
Разработайте с использованием Win32 API оконное приложение, содержащее в центре клиентской области 2 кнопки: «Close» и «Reset». Начальные размеры окна – 500x300. Минимальные размеры окна – 300 * 200. В области заголовка окна не должно находиться кнопок кроме крестика.
При изменении размеров окна пользователем кнопки должны центрироваться (расстояние между ними должно оставаться неизменным).
При нажатии на кнопку с надписью Close происходит выход из приложения.
При нажатии на кнопку с надписью Reset происходит восстановление начальных размеров окна (см. выше).
При нажатии на крестик в области заголовка окно закрываться не должно, но должен раздаваться звуковой сигнал (используйте функцию MessageBeep), а надпись на кнопке Close должна превращаться в “Click Me” на 2 секунды, а потом снова меняться на Close (используйте события таймера).
-
Задание 3 – 50 баллов
Разработайте с использованием WinAPI оконное приложение без строки заголовка и границы. Пользователь может перемещать окно при помощи мыши, таская его за клиентскую область. Существует, как минимум, 2 способа решить данную задачу:
1. Отлавливать сообщения WM_LBUTTONDOWN, WM_LBUTTONUP и WM_MOUSEMOVE и выполнять перемещение окна вслед за мышью.
2. Обрабатывать сообщение WM_NCHITTEST соответствующим образом
При щелчке (щелчок – нажатие и отпускание кнопки мыши над некоторой областью) правой кнопкой мыши по клиентской области окна должен происходить выход из программы.
-
Задание 4 – 100 баллов
Разработайте с использованием библиотеки WTL оконное приложение (основанное на использовании диалога).
Приложение предоставляет пользователю диалог, эскиз которого представлен на рисунке, показанном ниже.
Пользователь может ввести свое имя, фамилию и отчество в текстовые поля и выбрать в выпадающих списках число, месяц и год своего рождения (список из 100 лет до текущего года). Содержимое списка для выбора числа учитывает количество дней в данном месяце указанного года (должны учитываться високосные годы). В списке увлечений пользователь может выбрать один или несколько своих увлечений.
Доступное только для чтения многострочное текстовое поле внизу диалога отображает анкетные данные в текстовом виде.
При нажатии на кнопку Выход происходит выход из программы. При нажатии на кнопку Сохранить приложение выполняет запрос имени файла при помощи стандартного диалога для ввода файлов (используйте класс CFileDialog библиотеки WTL) и завершает свою работу. Введенные пользователем анкетные данные сохраняются в указанный файл. Если пользователь нажал кнопку Cancel в окне выбора файла, то данные в файл не записываются, и происходит выход из программы.