
- •Уп. 1. Создание оконных приложений Win32
- •1. Определения
- •2. Класс окон
- •2.1. Описание используемых классом окон ресурсов
- •2.2. Пример регистрации класса окон
- •2.3. Функция окна
- •3. Создание окон
- •4. Главная функция приложения
- •5. Создание приложения Win32
- •1.6. Вспомогательные функции создания окон
- •1.6.1. Функции поиска и определения состояния окон
- •1.6.2. Функции перемещения окон
- •1.6.3. Сообщения приложения для пользователя
- •7. Примеры создания окон
- •7.1. Проверка наличия предыдущего экземпляра
- •7.2. Расположение окон черепицей
- •Контрольные вопросы
- •Упражнения
- •Приложение 1
Контрольные вопросы
Чем отличается текст приложения, которое создает окна, от текста приложения, которое не создает окон?
Каков алгоритм работы главной функции приложения?
Какие действия должно выполнить приложение для создания окна?
Описания каких программных объектов нужно включить в текст приложения для регистрации класса окон?
В каком месте и как происходит вызов функции окна?
Каково назначение формальных параметров функции окна?
Какие сообщения получает функция окна на этапе создания окна?
Что происходит с теми сообщениями, которые функция окна не обрабатывает?
Каковы отличительные характеристики перекрывающихся, временных и дочерних окон?
Как единственный раз создать окно в теле функции окна-владельца?
Упражнения
После нажатия на левую (правую) клавишу мыши над рабочей областью окна в левом верхнем (правом нижнем) углу области отобразить временное окно размером в четверть области. Временное окно скрыть после отжатия клавиши в любом месте экрана.
В левом верхнем (в правом нижнем) углу рабочей области окна создать временное (дочернее) окно. После нажатия левой клавиши мыши 4 раза "мигает" временное окно, а после нажатия правой – 3 раза "мигает" дочернее окно. При этом окна выдают различные звуковые сигналы.
Создать окно приложения размером в одну шестнадцатую площади экрана с заголовком "Форматирование диска" без кнопок изменения размеров, закрытия и сворачивания в пиктограмму и без кнопки системного меню. При перемещении курсора мыши над рабочей областью окно должно "убегать" от курсора мыши в случайном образом выбранном направлении, оставаясь в пределах экрана.
В левом верхнем углу рабочей области окна создать временное окно площадью в одну шестнадцатую площади этой области. При нажатии на левую (правую) клавишу мыши временное окно переместить в соседний по ходу (против хода) часовой стрелки угол рабочей области.
При запуске i-ro экземпляра (i>2) приложения спросить пользователя, нужно ли его запустить. Если пользователь ответит "Да", то запустить его. Иначе на передний план переместить 2-й экземпляр приложения и завершить работу i-ro экземпляра.
Углы рабочей области окна приложения полностью занимают 4 временных окна одного класса. Если нажать левую клавишу мыши над временным окном, то это окно выдает сообщение о своем заголовке.
Окно приложения без заголовка занимает весь экран фоном рабочего стола.
В центре рабочей области окна располагается невидимое окно без заголовка размером в четверть площади рабочей области. После нажатия левой клавиши мыши над рабочей областью любого из окон окно без заголовка должно стать видимым, а после нажатия правой – невидимым.
В центре рабочей области окна отображено дочернее окно с фоном цвета трехмерных элементов с вертикальной и горизонтальной полосами просмотра размером в четверть этой области. Дочернее окно перемещается в тот угол рабочей области, где нажали левую клавишу мыши.
В центре рабочей области окна расположено окно без заголовка с вертикальной и горизонтальной полосами просмотра размером в четверть рабочей области. При нажатии разных клавиш мыши временное окно выдает разный звуковой сигнал.
Создать окно размером в четверть площади экрана. После двойного щелчка мыши окно перемещается так, что его центр совпадает с координатами курсора мыши в момент щелчка.
Дочернее окно размером 100*100 пикселей при перемещении курсора мыши над ним "убегает" от курсора мыши в произвольном направлении, оставаясь в пределах рабочей области родительского окна.
При запуске второго экземпляра приложения сообщить о запрете запуска нескольких экземпляров, на передний план переместить первый экземпляр приложения, 3 раза изменить подсветку его окна, выдавая звуковое предупреждение, и завершить работу второго экземпляра.
В рабочей области окна приложения рядом друг с другом расположить 3 временных окна, каждое из которых по-своему реагирует на нажатие левой клавиши мыши.
Окно первого экземпляра приложения расположить в левом верхнем, второго – в правом верхнем, третьего – в левом нижнем, четвертого- в правом нижнем углу экрана. Причем все окна равных размеров и вместе занимают весь экран. В заголовке окна указать номер экземпляра. Запретить запуск пятого экземпляра.
Центр рабочей области окна занимает временное окно размером в четверть площади области в свернутом состоянии. После нажатия левой клавиши мыши над рабочей областью временное окно распахивается в центре области, а после нажатия правой – сворачивается в центре.
Центр рабочей области окна занимает временное окно размером в четверть площади области. Оно перемещается в тот угол рабочей области, где щелкнули левой клавишей мыши. А после щелчка правой клавишей мыши временное окно перемещается в угол, противоположный текущему углу.
Окно приложения занимает четверть экрана и расположено в левом верхнем углу. Создать временное окно такого же размера в правом нижнем углу экрана. Любое окно после нажатия левой клавиши мыши перемещается в свободный по ходу часовой стрелки угол.
Окно размером в четверть площади экрана расположено в центре экрана. После нажатия левой клавиши мыши окно несколько раз меняет подсветку и перемещается в угол экрана так, что курсор мыши оказывается за пределами окна.
При запуске не первого экземпляра приложения выдать предупреждающий звуковой сигнал и сообщить о количестве уже работающих копий этого приложения. Запустить экземпляр, только если согласен пользователь.
В рабочей области окна приложения рядом друг с другом расположить 4 временных окна, в заголовках которых указан номер окна. После нажатия левой клавиши мыши временное окно выдает сообщение, содержащее номер окна.
Правый верхний угол рабочей области окна приложения занимает временное окно размером в четверть этой области. После нажатия правой клавиши мыши над рабочей областью окна приложения временное окно сворачивается в пиктограмму в левом нижнем углу, а после нажатия левой – распахивается в правом верхнем углу рабочей области.
В углах рабочей области окна приложения созданы невидимые временные окна с заголовком. Каждое окно становится видимым после нажатия левой клавиши мыши над его частью рабочей области и становится невидимым после нажатия левой клавиши мыши над его рабочей областью.
Окно приложения размером в четверть площади экрана занимает один из углов экрана. После нажатия левой клавиши мыши окно сворачивается в пиктограмму. После щелчка по пиктограмме оно восстанавливается в другом углу экрана.
При запуске приложения показать окна уже существующих копий этого приложения и спросить пользователя, нужно ли запустить еще один экземпляр. Если пользователь ответит "Да", то запустить его. Иначе завершить работу приложения