1. После нажатия на левую (правую) клавишу мыши над рабочей областью окна в левом верхнем (правом нижнем) углу области отобразить временное окно размером в четверть области. Временное окно скрыть после отжатия клавиши в любом месте экрана.
2. В левом верхнем (в правом нижнем) углу рабочей области окна создать временное (дочернее) окно. После нажатия левой клавиши мыши 4 раза "мигает" временное окно, а после нажатия правой – 3 раза "мигает" дочернее окно. При этом окна выдают различные звуковые сигналы.
3. Создать окно приложения размером в одну шестнадцатую площади экрана с заголовком "Форматирование диска" без кнопок изменения размеров, закрытия и сворачивания в пиктограмму и без кнопки системного меню. При перемещении курсора мыши над рабочей областью окно должно "убегать" от курсора мыши в случайном образом выбранном направлении, оставаясь в пределах экрана.
4. В левом верхнем углу рабочей области окна создать временное окно площадью в одну шестнадцатую площади этой области. При нажатии на левую (правую) клавишу мыши временное окно переместить в соседний по ходу (против хода) часовой стрелки угол рабочей области.
5. При запуске i-ro экземпляра (i>2) приложения спросить пользователя, нужно ли его запустить. Если пользователь ответит "Да", то запустить его. Иначе на передний план переместить 2-й экземпляр приложения и завершить работу i-ro экземпляра.
6. Углы рабочей области окна приложения полностью занимают 4 временных окна одного класса. Если нажать левую клавишу мыши над временным окном, то это окно выдает сообщение о своем заголовке.
7. Окно приложения без заголовка занимает весь экран фоном рабочего стола.
8. В центре рабочей области окна располагается невидимое окно без заголовка размером в четверть площади рабочей области. После нажатия левой клавиши мыши над рабочей областью любого из окон окно без заголовка должно стать видимым, а после нажатия правой – невидимым.
9. В центре рабочей области окна отображено дочернее окно с фоном цвета трехмерных элементов с вертикальной и горизонтальной полосами просмотра размером в четверть этой области. Дочернее окно перемещается в тот угол рабочей области, где нажали левую клавишу мыши.
10. В центре рабочей области окна расположено окно без заголовка с вертикальной и горизонтальной полосами просмотра размером в четверть рабочей области. При нажатии разных клавиш мыши временное окно выдает разный звуковой сигнал.
11. Создать окно размером в четверть площади экрана. После двойного щелчка мыши окно перемещается так, что его центр совпадает с координатами курсора мыши в момент щелчка.
12. Дочернее окно размером 100*100 пикселей при перемещении курсора мыши над ним "убегает" от курсора мыши в произвольном направлении, оставаясь в пределах рабочей области родительского окна.
13. При запуске второго экземпляра приложения сообщить о запрете запуска нескольких экземпляров, на передний план переместить первый экземпляр приложения, 3 раза изменить подсветку его окна, выдавая звуковое предупреждение, и завершить работу второго экземпляра.
14. В рабочей области окна приложения рядом друг с другом расположить 3 временных окна, каждое из которых по-своему реагирует на нажатие левой клавиши мыши.
15. Окно первого экземпляра приложения расположить в левом верхнем, второго – в правом верхнем, третьего – в левом нижнем, четвертого- в правом нижнем углу экрана. Причем все окна равных размеров и вместе занимают весь экран. В заголовке окна указать номер экземпляра. Запретить запуск пятого экземпляра.
16. Центр рабочей области окна занимает временное окно размером в четверть площади области в свернутом состоянии. После нажатия левой клавиши мыши над рабочей областью временное окно распахивается в центре области, а после нажатия правой – сворачивается в центре.
17. Центр рабочей области окна занимает временное окно размером в четверть площади области. Оно перемещается в тот угол рабочей области, где щелкнули левой клавишей мыши. А после щелчка правой клавишей мыши временное окно перемещается в угол, противоположный текущему углу.
18. Окно приложения занимает четверть экрана и расположено в левом верхнем углу. Создать временное окно такого же размера в правом нижнем углу экрана. Любое окно после нажатия левой клавиши мыши перемещается в свободный по ходу часовой стрелки угол.
19. Окно размером в четверть площади экрана расположено в центре экрана. После нажатия левой клавиши мыши окно несколько раз меняет подсветку и перемещается в угол экрана так, что курсор мыши оказывается за пределами окна.
20. При запуске не первого экземпляра приложения выдать предупреждающий звуковой сигнал и сообщить о количестве уже работающих копий этого приложения. Запустить экземпляр, только если согласен пользователь.
21. В рабочей области окна приложения рядом друг с другом расположить 4 временных окна, в заголовках которых указан номер окна. После нажатия левой клавиши мыши временное окно выдает сообщение, содержащее номер окна.
22. Правый верхний угол рабочей области окна приложения занимает временное окно размером в четверть этой области. После нажатия правой клавиши мыши над рабочей областью окна приложения временное окно сворачивается в пиктограмму в левом нижнем углу, а после нажатия левой – распахивается в правом верхнем углу рабочей области.
23. В углах рабочей области окна приложения созданы невидимые временные окна с заголовком. Каждое окно становится видимым после нажатия левой клавиши мыши над его частью рабочей области и становится невидимым после нажатия левой клавиши мыши над его рабочей областью.
24. Окно приложения размером в четверть площади экрана занимает один из углов экрана. После нажатия левой клавиши мыши окно сворачивается в пиктограмму. После щелчка по пиктограмме оно восстанавливается в другом углу экрана.
25. При запуске приложения показать окна уже существующих копий этого приложения и спросить пользователя, нужно ли запустить еще один экземпляр. Если пользователь ответит "Да", то запустить его. Иначе завершить работу приложения
Приложение 1
Таблица 1.1. Список значений стиля класса окон
Значение стиля класса | Пояснение |
CS_BYTEALIGNCLIENT | Рабочую область окна выравнивать по границе байта видеопамяти. Это ускоряет перерисовку окна, влияет на размеры окна по оси X |
CS_BYTEALIGNWINDOW | Все окно выравнивать по границе байта видеопамяти. Этот стиль влияет на размеры окна по оси х |
CS_CLASSDC | Создать единый контекст отображения для всех окон |
CS_DBLCLKS | Функция окна будет получать сообщения при двойном щелчке клавишей мыши над рабочей областью |
CS_GLOBALCLASS | Доступный всем приложениям класс. При создании окон можно игнорировать дескриптор приложения |
CS_HREDRAW | Рабочую область перерисовывать при изменении ширины окна |
CS_NOCLOSE | Отключить команду Close в системном меню |
CS_OWNDC | Создать свой контекст устройства для каждого окна |
CS_PARENTDC | Окна будут пользоваться контекстом устройства создавшего их окна (родителя) |
CS_SAVEBITS | Часть окна, затененного другим окном, сохранять в виде битового образа и использовать этот образ для воссоздания этой части при перемещении затеняющего окна |
CS_VREDRAW | Рабочую область перерисовывать при изменении высоты окна |
Таблица 1.2. Список значений определенных в системе иконок
Значения | Назначение |
IDI_APPLICATION | Иконка, назначаемая окну приложения по умолчанию |
IDI_ASTERISK | Символ i (используется в информативных сообщениях) |
IDI_EXCLAMATION | Восклицательный знак (используется в предупреждениях) |
IDI_HAND | Знак STOP (используется при ошибках). |
IDI_QUESTION | Вопросительный знак (используется в подсказках) |
NULL или IDI_WINLOGO | Эмблема Windows |
Таблица 1.3. Список значений определенных в системе курсоров мыши
Значение | Назначение |
IDC_APPSTARTING | Стандартная стрелка и малые песочные часы |
IDC_ARROW | Стандартная стрелка |
IDC_CROSS | Перекрестие |
IDC_IBEAM | Текстовый курсор в виде I |
IDC_NO | Перечеркнутый круг |
IDC_SIZEALL | Четырехсторонняя стрелка |
IDC_SIZENESW | Двусторонняя стрелка (на северо-восток и юго-запад) |
IDC_SIZENS | Двусторонняя стрелка (на север и юг) |
IDC_SIZENWSE | Двусторонняя стрелка (на северо-запад и юго-восток) |
IDC_SIZEWE | Двусторонняя стрелка (на запад и восток) |
IDC_UPARROW | Вертикальная стрелка |
IDC_WAIT | Песочные часы |
Таблица 1.4. Список значений системных цветов
Идентификатор цвета | Назначение в системе |
COLOR_ACTIVEBORDER | Рамка активного окна |
COLOR_ACTIVECAPTION | Заголовок активного окна |
COLOR_APPWORKSPACE | Фон MDI-окна |
COLOR_BACKGROUND, COLOR_DESKTOP | Рабочий стол |
COLOR_BTNFACE | Цвет трехмерных элементов |
COLOR_BTNHIGHLIGHT | Выбранная кнопка |
COLOR_BTNSHADOW | Тень трехмерных элементов |
COLOR_BTNTEXT | Текст надписи кнопки |
COLOR_CAPTIONTEXT | Текст заголовка окна, кнопок изменения размера и полосы просмотра |
COLOR_GRAYTEXT | Текст заблокированного элемента |
COLOR_HIGHLIGHT | Выбранный элемент управления |
COLOR_HIGHLIGHTTEXT | Текст выбранного элемента |
COLOR_INACTIVEBORDER | Рамка неактивного окна |
COLOR_INACTIVECAPTION | Заголовок неактивного окна |
COLOR_INACTIVECAPTIONTEXT | Текст заголовка для неактивного окна |
COLOR_MENU | Фон меню |
COLOR_MENUTEXT | Текст меню |
COLOR_SCROLLBAR | Внутренняя область полосы просмотра |
COLOR_WINDOW | Фон окна |
COLOR_WINDOWFRAME | Рамка окна |
COLOR_WINDOWTEXT | Текст в окне |
COLOR_3DDKSHADOW | Темная тень трехмерных элементов |
COLOR_BTNHILIGHT | Цвет граней выбранных трехмерных элементов |
COLOR_3DLIGHT | Цвет граней трехмерных элементов |
COLOR_INFOBK | Фон панели инструментов |
COLOR_INFOTEXT | Текст на панели инструментов |
Таблица 1.5. Список значений стилей окон
Имя константы | Описание стиля |
WS_BORDER | Окно с рамкой |
WS_CAPTION | Окно с заголовком (включает стиль WS_BORDER) |
WS_CHILD или WS_CHILDWINDOW | Дочернее окно |
WS_CLIPCHILDREN | Родительское окно не перерисовывает те области, которые затенены собственными дочерними окнами |
WS_CLIPSIBLINGS | Дочернее окно не перерисовывает те области, которые затенены другими дочерними окнами того же родителя |
WS_DISABLED | Создать заблокированное окно |
WS_DLGFRAME | Окно с двойной рамкой без заголовка |
WS_GROUP | Определяет первый элемент группы органов управления, которая состоит из этого элемента и последующих за ним элементов до элемента со стилем WS_GROUP. Первый элемент группы имеет стиль WS_TABSTOP, чтобы пользователь мог перемещаться между группами нажатием клавиш Tab. Внутри группы от элемента к элементу переходят клавишами направления |
WS_HSCROLL | Окно с горизонтальной полосой просмотра |
WS_ICONIC или WS_MINIMIZE | Изначально свернутое в пиктограмму окно |
WS_MAXIMIZE | Окно максимально возможного размера |
WS_MAXIMIZEBOX | Окно с кнопкой восстановления/максимизации размера. Используют со стилями WS_OVERLAPPED и WS_CAPTION |
WS_MINIMIZEBOX | Окно с кнопкой сворачивания окна в пиктограмму. Используют со стилями WS_OVERLAPPED и WS_CAPTION |
WS_OVERLAPPED | Перекрывающееся окно, имеющее заголовок и рамку |
WS_OVERLAPPEDWINDOW | Окно с комбинацией стилей WS_OVERLAPPED, WS_THICKFRAME, WS_SYSMENU, WS_MINIMIZEBOX и WS_MAXIMIZEBOX |
WS_POPUP | Временное окно |
WS_POPUPWINDOW | Комбинация стилей WS_POPUP, WS_BORDER и WS_SYSMENU. Для того чтобы сделать системное меню доступным, нужно добавить стиль WS_CAPTION |
WS_SIZEBOX | Окно с толстой рамкой для изменения размера окна |
WS_SYSMENU | Окно с системным меню. Объединяют с WS_CAPTION |
WS_TABSTOP | Элемент управления, который получает фокус ввода с клавиатуры при нажатии клавиши Tab |
WS_VISIBLE | Окно становится видимым сразу после создания |
WS_VSCROLL | Окно с вертикальной полосой просмотра |
MDIS_ALLCHILDSTYLES | Используется при создании дочерних MDI-окон и определяет окна, которые могут иметь любые комбинации стилей. По умолчанию дочерние MDI-окна имеют стили WS_MINIMIZE, WS_MAXIMIZE, WS_VSCROLL, WS_HSCROLL |