Окно — интерфейсный элемент Windows в виде прямоугольной области экрана, предназначенный для предоставления пользователю возможности управления различными объектами.
Кроме окон к интерфейсным элементам также относятся кнопки, меню, списки, пиктограммы и т.д.
Интерфейс пользователя — совокупность элементов управления и правил работы с ними, обеспечивающая взаимодействие пользователя с компьютером, программой, устройством.
Окна — основное средство интерфейса пользователя в операционной системе Windows, вследствие чего она и получила свое название (windows в переводе с английского — окна).
В Windows существуют
следующие типы окон:
♦ стандартные — окна выполняемых программ;
♦ диалоговые — окна выбора вариантов, настройки параметров и выдачи информационных сообщений.
Стандартные окна предназначены для организации интерактивного интерфейса (способа взаимодействия) пользователя и программ.
Отличительным признаком интерактивного интерфейса является наличие большого количества интерфейсных элементов (кнопок, меню, элементов выбора, пиктограмм), которыми пользователь может оперировать произвольно, в выбираемой им последовательности.
Все стандартные окна Windows
имеют одинаковую структуру и содержат следующие элементы управления:
♦ рамку окна;
♦ строку заголовка;
♦ кнопки:
♦ Системного меню, находящуюся слева от строки заголовка в виде уменьшенной копии пиктограммы, с помощью которой данное окно было открыто;
♦ Свернуть — для временного сворачивания окна с Рабочего стола;
♦ Развернуть — для раскрытия окна на весь экран;
♦ Закрыть — для завершения работы с окном;
♦ размерный уголок.
Рамка
окна расположена по периметру окна и предназначена для обозначения и изменения
его размеров. Для изменения размеров окна необходимо буксировать управляющие
элементы его рамки — горизонтальные и вертикальные полосы или размерный уголок.
Для изменения размеров окна:
♦ навести указатель мышки на управляющий элемент рамки;
♦ добиться, чтобы указатель мышки, установленный на элемент рамки, принял вид двунаправленной стрелки;
♦ выполнить буксировку элемента рамки.
Строка
заголовка служит для буксировки окна по Рабочему столу. В строке заголовка
размещается название, характеризующее информацию, просматриваемую в окне
(например, название программы).
Стандартное окно может
находиться в состояниях:
♦ нормальном:
♦ окно ограничено рамкой и занимает часть Рабочего стола;
♦ среди элементов управления присутствует кнопка Развернуть;
♦ свернутом:
♦ окно временно убрано с Рабочего стола (скрыто);
♦ на Панели задач имеется кнопка с названием окна;
♦ развернутом, полноэкранном состоянии:
♦ окно целиком занимает Рабочий стол;
♦ рамка окна отсутствует;
♦ среди элементов управления имеется кнопка Восстановить.
Переместить
окно и изменить его размеры можно только в нормальном состоянии окна.
Кнопка Закрыть закрывает стандартное окно и полностью завершает работу с программой. В отличие от сворачивания закрытие окна приводит к исчезновению кнопки с названием окна из Панели задач.
Чтобы закрыть окно, необходимо щелкнуть мышкой по кнопке Закрыть.
Кнопка Системного меню располагается слева от строки заголовка окна в виде уменьшенной копии пиктограммы, с помощью которой данное окно было открыто.
Щелчок мышки по этой кнопке приводит к появлению Системного меню с командами закрытия, перемещения, изменения размеров и состояния окна.
Windows – операционная система, обладающая достаточно дружелюбным пользовательским интерфейсом. Разобраться с азами работы в Windows намного проще, чем в том же Linux. Связано это с тем, что создатели ОС позаботились о наличии так называемых диалоговых окон. В них располагаются элементы управления всей системой.
В данной статье будет рассказано о том, что собой представляет диалоговое окно. Предстоит изучить его предназначение, разновидности, а также то, как оно выглядит. Все это пригодится преимущественно новичкам, планирующим работать с ПК.
Определение
Диалоговое окно (dialog box) – это элемент графического интерфейса. Специальный компонент, представляющий собой окошко, предназначенное для вывода информации, а также получения ответов со стороны пользователя. Это – своеобразное «место ведения диалога» между машиной (устройством) и клиентом.
Элементарный пример – это окно сообщения. Оно выводит на дисплей сообщение, после чего требует от пользователя подтверждения факта прочтения. Для этого используется специальная кнопка. Чаще – «Ок». Окошки сообщений необходимы непосредственно для того, чтобы:
- информировать пользователя о завершившемся действии в пределах системы;
- выводить на экран сообщения об ошибках;
- отображать те или иные данные, которые не требуют от клиента какого-либо выбора.
Окошечки сообщений выступает одним из наиболее часто встречающихся шаблонов проектирования. Несмотря на это, соответствующий компонент получает немало критики. Он рассматривается как малоэффективное решение для поставленной задачи. От ошибочных действий непосредственного клиента защитить не сможет.
Разновидности
Диалоговые окна нужны для того, чтобы наладить связь по типу «пользователь-система». Такой подход является своеобразной аналогией реального диалога. В операционных системах и приложениях выделяют несколько видов рассматриваемого компонента:
- модальные окна;
- немодальное окошко.
Первый вариант рассмотрим сразу на нескольких уровней – со стороны приложения и непосредственного окошка. После этого предстоит изучить проектирование изучаемых элементов пользовательского интерфейса более подробно.
Немодальный тип
Диалоговое окошко может быть немодальное – modeless. Оно используются тогда, когда информация, отображаемая в пределах «рамки», является несущественной для дальнейшего функционирования системы. Такие окошки остаются открытыми, а работа клиента с ОС успешно продолжается.
Примерами диалоговых немодальных окон могут выступать:
- панель инструментов;
- «палитра» в графическом редакторе.
Если «палитра» отсоединена или может открепляться от главного окошка приложения – в этом случае рассматриваемый инструмент будет относиться к немодальному типу. В нем есть компоненты управления, которые используются параллельно с работой программного обеспечения. Подобные окошки редко носят название «диалоговых».
Согласно действующим правилам грамотного программного дизайна рекомендуется использовать именно этот вариант окошек. Он не требует от пользователя определенной (и не всегда очевидной) последовательности действий.
Также вариантом немодального диалогового окна является блок пользовательского интерфейса для корректировки свойств текущего документа – фона, текста. Пользователь сможет вводить текст без учета его цвета. В любой момент соответствующий параметр удастся скорректировать под собственные нужды за счет специального диалогового окошка.
Модальные – уровень приложений
Модальное диалоговое окно – это окошко, которое будет блокировать работу пользователя с родительским программным обеспечением. Происходит это до тех пор, пока клиент его не закроет собственными руками. Основная масса рассматриваемых диалоговых компонентов относится именно к модальному типу.
Пример – настройки приложения. Связно это с тем, что реализовать режим проще, когда все внесенные изменения применяются или отменяются (в зависимости от проводимых операций) одновременно. И делается это тогда, когда клиент решил внести изменения, после чего открыл необходимый раздел в программе.
Отображение в модальном режиме имеет широкое распространение. Пример – когда софт должен получить дополнительную информацию для продолжения функционирования или подтверждение от клиента (согласие на операцию). Актуально, когда планируемые манипуляции попадают под категорию потенциально опасных.
Модальные диалоговые окошки запросов на уровне приложений выступают в качестве плохих дизайнерских решений. Они способны привести клиента к «ошибкам режима ПО». Опасные операции должны иметь возможность отмены везде, где только возможно. В случае с рассматриваемым диалоговым компонентом системы/приложения соответствующие перспективы отсутствуют. Окошко через некоторое время после внезапного появления пропускаются пользователями автоматически. Надежную защиту от опасных и нежелательных действий такие элементы не обеспечивают в должной мере.
Модальные – на уровне окна
Диалоговые окна модального типа имеют свои недостатки. Чтобы их смягчить, программисты предложили концепцию модальности на уровне окошка или конкретного документа. Тут нужно запомнить следующее:
- Подход активно используется на практике. Пример – MacOS.
- Когда появляется окошко соответствующего типа, работа с остальными «диалоговыми» компонентами приложения попадает под блокировку.
- Поддерживается возможность изменения размера родительского приложения и непосредственного модального окошка.
- Окно диалога не перекрывает основное приложение. Оно просто к нему прикрепляется.
При появлении рассматриваемого элемента не получится закрыть основное приложение. Операция станет доступна лишь после того, как клиент закроет диалоговое модальное окно. Других вариантов системы и приложения не рассматривают.
Часто такие элементы нужны для того, чтобы выводить на дисплей сообщения с важной информацией. Пример – разнообразные ошибки и предупреждения.
Кнопки
Изучая типичное диалоговое окно, нельзя не обратить внимание на очень важный элемент – кнопку. Такие компоненты присутствуют в большинстве рассматриваемых «диалогов». Чаще всего встречаются:
- Ок. Кнопка, которая позволяет клиенту выразить согласие с тем, что в тот или иной момент времени отображает конкретное диалоговое окно. При клике по соответствующему элементу управления происходит закрытие окошка. Проведенные изменения (если таковые были) вступают в силу.
- Cancel. Это – отмена. Закрывает диалоговое окно без применения внесенных изменений.
- Apply – применить. Аналог «Ок» в некоторых приложениях и документах. Закрывает диалоговое имеющееся окно, принимая те или иные изменения.
Также при формировании пользовательского интерфейса диалоговых окон рекомендуется внедрить справочную информацию. Для этого обычно создается элемент под названием «Справка». Выглядит или как кнопка с соответствующей надписью, или как «знак вопроса» в навигационном меню главного окна приложения.
Остальные кнопки в диалоговых окнах встречаются редко. Они зависят непосредственно от имеющегося приложения, а также конкретной задачи.
Основы проектирования
Диалоговые окна используются в современных операционных системах повсеместно. Каждый программист должен знать не только о том, как выглядит соответствующий компонент ОС или приложения, но и уметь проектировать их. Это важный момент для тех, кто планирует заниматься ООП, а также создавать программное обеспечение с «дружелюбным» пользовательским интерфейсом. Далее будет представлена информация, которая поможет добиться желаемого результата.
Варианты применения
Диалоговые окна нужны для отладки «диалога» между пользователем и компьютером. Применяются такие компоненты в разных направлениях. Все зависит от выбранного шаблона окошка:
Блок вопросов (при помощи кнопок). Он задает пользователям вопрос или подтверждает команду. Использует элементарные ответы в горизонтально упорядоченных кнопках команд.
- Раздел вопросов (ссылками на команды). Отвечает за задание всего одного вопроса клиенту. Выбирает задачу для выполнения, а также использует подробные ответы в вертикально упорядоченных ссылках на непосредственные команды.
- Выбора. Это – диалоговые окна, которые представляют клиентов с набором вариантов, обычно для более полного описания той или иной команды. В отличие от варианта с «вопросами», такие диалоги могут задавать сразу несколько вопросов.
- Хода выполнения. Такие диалоговые окна предоставляют клиентам обратную связь о ходе дополнительных операций (длящихся более 5 секунд), а также выдающие команды для отмены или остановки проводимых манипуляций.
Также есть информационные диалоги. Самые простые и распространенные. Нужны для того, чтобы отображать сведения, которые запросил пользователь у приложения или операционной системы.
Рекомендации
Создавая диалоговые окна, рекомендуется:
- Не использовать прокручиваемые вариации. Вместо них лучше внести изменения в уже имеющиеся диалоговые окна. Пример – использовать прогрессивное раскрытие или вкладки.
- При отсутствии строки меню или состояния нужно предоставить доступ к командам и состоянию через диалоговое непосредственное окно. Можно задействовать в этом случае контекстное меню соответствующих элементов управление. Строки меню допустимы тогда, когда диалоговое окно используется для реализации основного. Пример – служебные приложения.
- Если создаваемый элемент требует пристального внимание, а программа не активна, надо нажать кнопку панели задач три раза. Это привлечет внимание клиента и оставит окошко выделенным. Иных действий предпринимать не нужно.
Это – общие рекомендации. Далее все зависит от того, какое именно диалоговое (модальное или немодальное) окно будет использоваться программистами.
Рекомендации для модального вида
Тут необходимо запомнить следующее:
- Такое диалоговое окно используется для редких задач одноразового характера, а также критических ситуаций. Применимо тогда, когда нужно что-то завершить перед продолжением.
- Чтобы изменения не вступали в силу до явной фиксации, рекомендуется использовать модели отложенной фиксации.
- Реализацию диалогового окна задачи проводят при необходимости. Этот прием позволит обеспечить более согласованный внешний вид диалога.
Но и это еще не все. Диалоговые окна бывают без режима (немодальные), а также с несколькими страничками. Для всего этого тоже есть свои рекомендации.
Советы для немодального типа
Диалоговое окно без режима предусматривает такие советы по созданию:
- Используются для частых и повторяющихся задач.
- При проектировании рекомендуется применять модель немедленной фиксации. Это помогает изменениям тут же вступать в силу.
- Диалоговое окно без режима предусматривает использование кнопки «Закрыть» в окне. Оно нужно для того, чтобы завершить работу с окошком. Разместить компонент нужно в строке заголовка.
- Можно рассмотреть возможность создания нескольких диалоговых окон с возможностью закрепления. Не моделируемые компоненты предоставляют больше гибкости.
Увидеть примеры такие windows dialogs можно в MS Office. Их можно закрепить в той или иной области.
Когда их несколько
Диалоговых создаваемых окон может быть несколько. В этом случае нужно:
- Не отображать несколько диалогов выбора владельцев одновременно из окошка выбора владельца. Несколько кнопок фиксации делает работу с сообщением более сложной. Пользователь не всегда разберется с такими диалоговыми выскочившими окнами. Лучше использовать несколько соответствующих компонентов последовательно. Пример – диалоги вопросов.
- Использовать многостраничные диалоговые системные окна. Отдельные диалоги применяются тогда, когда они не имеют четкой связи между собой.
Также есть диалоговое окно с несколькими страничками. Тут рекомендуется:
- Использовать подобный компонент вместо отдельных диалогов, если есть последовательность связанных страничек: входная (не является обязательной), ход выполнения, результат.
- Не использовать диалоговые многостраничные окна, если входная страничка – это стандартный диалог. Тут особую роль играет согласованность использования.
- Отказаться от «Далее» и «Назад», когда создается новое диалоговое окно. Тут также не стоит использовать более трех страниц.
- На входной страничке использовать только определенные кнопки команд или ссылки на команды, которые позволяют инициировать задачу.
Для того, чтобы диалоговое окно можно было закрыть, рекомендуется использовать на страничках ввода и хода выполнения кнопку «Отмена». В «результатах» отдается предпочтение элементу «Закрыть».
Тут и тут можно узнать больше о создании и проектировании изученного элемента. А специализированные дистанционные онлайн курсы помогут быстрее научиться создавать окна в операционных системах.
Хотите освоить современную IT-специальность? Огромный выбор курсов по востребованным IT-направлениям есть в Otus! Также обратите внимание на специлизированный курс «Администратор Windows«.
Тема: Компьютер как универсальное средство обработки информации
Урок: Основные принципы графического интерфейса. Файловая система. Действия над файлами
1. Введение
Операционная система компьютера представляет собой сложную структуру разнообразных данных (файлы, папки, библиотеки и.т.д.). Для упрощения работы с такой системой данных в современных операционных системах используется графический интерфейс. Современные технологии ставят всё новые и новые требования к разработчикам графических интерфейсов для того, чтобы облегчить работу с операционной системой для пользователя а также привнести в систему множество интерактивных нововведений, превращающих работу с операционной системой компьютера в увлекательное развлечение. На данном уроке вы познакомитесь с графическим интерфейсом операционной системы Windows, узнаете каким образом организована файловая система, изучите основные операции над файлами а также познакомитесь с наиболее известными на сегодняшний день файловыми менеджерами.
Для управления операционной системой и для обеспечения эффективного взаимодействия «человек-компьютер» используется интерфейс. Рассмотрим определение термина «интерфейс»:
Интерфейс – совокупность средств и правил, которые обеспечивают взаимодействие устройств, программ и человека. Этот термин получил широкое распространение в тех сферах, где существует необходимость обработки данных. Стоит заметить, что значение «интерфейс» не обязательно обозначает сугубо термин, связанный только с компьютерными науками. Строго говоря, интерфейс служит неким связующим звеном человека с другими сущностями. Например, руль в автомобиле – это интерфейс для управления автомобилем, так как он связывает систему «человек–система управления автомобиля» в единую структуру. Но вернемся к понятию « графический интерфейс» в контексте управления операционной системой, рассмотрев его на примере операционной системы Windows.
Интерфейс операционной системы Windows позволяет пользователю удобно и эффективно управлять своим компьютером, во многом это достигается за счёт хорошо продуманной и интуитивно понятной системы расположения того или иного контента. Благодаря использованию большого количества значков, иконок, цветового оформления, оригинального дизайна экрана, этот графический интерфейс можно смело назвать дружественным для пользователя.
Рассмотрим основные элементы графического интерфейса на основе операционной системы Windows.
Основным и неизменным атрибутом графического интерфейса любой современной операционной системы является рабочий стол(рис.1) – пространство для запуска наиболее важных программ, местоположение ярлыков файлов и папок первой необходимости. На рабочем столе находится кнопка Пуск, в которой располагаются ярлыки на все установленные на компьютере программы, и обеспечивающая полноценное управление компьютером. Также на рабочем столе могут находятся так называемые виджеты– визуальные значки, обеспечивающие пользователю всю необходимую информацию в режиме онлайн (например, погодные, часовые виджеты).
Рис. 1. Рабочий стол операционной системы Windows 7 (Источник)
Также одним из главных и неизменных атрибутов графического интерфейса системы Windows является окно(рис.2). Окно– обрамленная часть экрана, в которой отображается приложение, документ или сообщение. Окно является активным (текущим), если с ним в данный момент работает пользователь.Окна могут отличаться по внешнему виду, но принцип у них один и тот же – они отображают то, что необходимо пользователю в данный момент времени.
Рассмотрим основные элементы, из которых состоит типичное окно системы Windows:
Граница окна – линия, обрамляющая окно. Если подвести курсор мыши к этой линии, то он примет вид двухсторонней стрелки и, таким образом, можно изменять внешние границы окна, как удобно пользователю.
Строка заголовка – имя в котором показано название окна, например «Мой компьютер». Может быть именем открытого документа, приложения итд.
Кнопки управления окном. Всегда расположены в правом верхнем углу. Они позволяют (слева направо) : свернуть окно, расширить его на весь экран, и закрыть окно.
Рис. 2. Окно операционной системы Windows 7 (Источник)
Если нажать на кнопку в левом верхнем углу окна, то откроется системное меню, при помощи которого можно провести стандартный набор действий над окном – восстановить, переместить, свернуть, развернуть, изменить размер или закрыть данное окно.
В рабочем поле окна мы можем видеть результат работы пользователя (выполняемые приложения, открытые документы), либо другие окна.
Панель инструментов, предоставляющая выбор командных кнопок для выбора команд мышью компьютера.
Строка состояние отображает режим работы данного окна, приложения, открытого в данном окне, либо информацию о состояниях объекта окна (например, свойства открытого в этом окне файла).
Полоса прокрутки в горизонтальном и вертикальном направлениях. Используется в тех случаях, когда содержимое окна не помещается в его рамки. В таком случае, его можно передвигать, используя полосу прокрутки.
Но вернёмся к рабочему столу Windows. Для того, чтобы изменить его свойства необходимо правой кнопкой мыши кликнуть по свободному (незанятому значками) пространству рабочего стола. Откроется контекстное меню, в нём можно будет настроить рабочий стол.
Обратим теперь своё внимания на нижнюю часть рабочего стола, в которой расположены следующие элементы:
Кнопка Пуск. Располагается в левом нижнем углу и предоставляет нам доступ к главному меню операционной системы.
Панель задач. Представляет собой область, расположенную ниже рабочего стола. Содержит в себе значки всех открытых пользователем программ (слева), а также программ, загружаемых в автозапуске вместе с операционной системой (так называемый трей, находится справа внизу на панели задач). Также в правой нижней части экрана на панели задач могут находиться часы и индикатор выбранной раскладки клавиатуры, в которой можно настроить язык ввода.
Для того, чтобы не путаться среди многочисленных значков и ярлыков разных типов и размеров их можно упорядочить. Чтобы это сделать необходимо выбрать команду «Упорядочить значки» и в открывшемся меню выбрать критерий, по которому будут упорядочены ярлыки и значки (например, имя, или дата создания файла).
Для того чтобы вставить хранящиеся в буфере обмена ярлыки и значки, можно воспользоваться командой «Вставить» или «Вставить ярлык».
Чтобы создать ярлык или иконку приложения на рабочем столе необходимо воспользоваться командой «Создать». Для этого надо нажать на пустом месте окна правой кнопкой мыши и выбрать меню «Создать». Можно выбрать «Ярлык» и в появившемся окне задать путь к файлу. Таким образом мы можем, к примеру, создать ярлык приложения на рабочем столе компьютера, чтобы иметь к нему быстрый доступ.
Команда «Свойства» в контекстном меню рабочего стола позволяет изменить фоновый рисунок рабочего стола, разрешение монитора, заставку а также настройку выключения дисплея при простое компьютера (в целях экономии энергии).
Теперь обратим своё внимание на внутреннюю структуру операционной системы Windows. Вся необходимая информация в операционной системе хранится в видефайлов.
Файл – набор однотипной информации, которая хранится на компьютере, имеет своё имя и тип. В файле может храниться любая цифровая информация – начиная от простых текстовых документов, фотографий или видеороликов и заканчивая мощными файлами баз данных защищенных серверов.
Для того чтобы лучше понять что же такое файл, приведём пример из реальной жизни. Представим себе железнодорожный вокзал. Тысячи людей беспорядочно снуют вокруг да около, в поисках своего поезда. Однако, на вокзале есть место, где почти всегда царит порядок и спокойствие. Это место, где люди оставляют свои вещи перед отъездом и оно называется камерой хранения. Тут находится большое количество ячеек, в которых люди могут оставить на время свои личные вещи: чемоданы, сумки пакеты итд. За каждой ячейкой закреплено определенное место в стеллаже и номер. Если вещи человека не помещаются в одну ячейку, их можно разместить в нескольких, даже удалённых друг от друга ячейках. При этом оператор камеры хранения записывает в свой журнал какая именно ячейка закреплена за конкретным человеком. Для того, чтобы найти нужные вещи в ячейке и успешно вернуть изх владельцу, оператору камеры хранения необходимо знать номера занятых ячеек и время, на которое отдавались вещи на хранение. Подобным же образом распределены и данные на компьютере на жёстком диске – фрагменты файлы не обязательно хранятся в одной ячейке памяти жёсткого диска, однако за каждым фрагментом закреплена служебная информация (дата, создания, размер, тип), позволяющая однозначно определить какому файлу принадлежит данный фрагмент. Роль оператора камеры хранения в компьютере берет на себя файловая система компьютера.
Каждый файл имеет своё расширение. Расширение– формат файла, однозначно определяющий к какому типу данных относится данный файл. Расширение файла всегда отделяется от имени файла точкой. Например, файл текстового формата имеет расширение .txt, файл-фотография имеет расширение .jpg, а музыкальный файл – соответственно, имеет расширение .mp3 и др (Рис.3).
Рис. 3. Иконки файлов различного формата
Есть файлы, которые вообще не имеют расширение и те, которые состоят только из расширения. Также вы можете встретить файлы, которые имеют два расширения, которые следуют друг за другом и отделены точкой.
Операционная система обычно автоматически распознаёт расширение файла и открывает соответствующую программу для работы с файлом данного типа. Можно также вручную задать компьютеру, какой программой открыть соответствующий файл. Для этого необходимо нажать на файл правой кнопкой мыши, выбрать меню «Открыть с помощью», далее в появившемся окне выбрать пункт «Выбрать программу из списка вручную». В открывшемся далее окне можно выбрать название программы и нажать ОК – теперь файл с данным расширением будет открыт в выбранной Вами программе.
Название файла может состоять как из латинских, так и из русских букв, цифр, некоторых знаков препинания, за исключением следующих символов:
“:” , “*”, “?”, “<”, «>» , « /», « \», « |»
Кроме имени каждый файл обладает размером, датой и временем создания. Размер файла измеряется в байтах.
Как мы уже знаем из примера, приведенного выше, роль оператора при выборе того или иного файла играет файловая системакомпьютера.
Файловая система– часть операционной системы, обеспечивающая выполнение операций над файлами. Файловая система позволяет создавать, переименовывать, удалять, переносить и копировать файлы с одного носителя на другой; искать файлы, хранящиеся на разных носителях, запускать программы на выполнение.
Рассмотрим теперь основные операции, которые можно производить над файлами:
Создание файла. Можно создать файл вручную, нажав правой кнопкой мыши на свободном от значков поле папки и выбрать тип создаваемого файла, затем присвоить ему имя. Также можно создать файл из приложения (например, в текстовом редакторе).
Сохранение файла. При сохранении файлу должно быть присвоено уникальное имя, которым он будет отличаться от других файлов. Тип и значок файлу автоматически присваиваются прикладной средой, в которой этот файл был создан.
Открытие файла. Открыть файл можно в прикладной среде, в которой он был создан, либо же в системной среде.
Переименование файла. Данная операция не изменит внутреннего содержимого файла, а просто его заменит.
Перемещение файла. Файл можно перемещать из одной папки в другую. Также можно перемещать файлы из одного логического диска на другой.
Копирование файла. Можно создать копию файла, в том числе и на другом логическом диске.
Удаление файла. Можно удалить файл в корзину, а можно стереть его бесследно, нажав Shift+Delete.
Чтобы выполнить вышеуказанные операции над файлом его необходимо для начала выделить мышкой, либо нажать на правую кнопку мыши и из контекстного меню выбрать необходимую команду.
Для того чтобы эффективно работать с файлами нужно уметь эффективно использовать специальные программы, так называемые файловые менеджеры. На сегодняшний день самыми распространёнными файловыми менеджерами являются Проводник и TotalCommander.
Рассмотрим организацию работы программы Проводник. Запустить эту программу можно двумя основными способами:
1. Вызвать меню Пуск – Программы – Стандартные – Проводник.
2. Запустить проводник, используя контекстное меню (вызывается нажатием правой кнопки мыши).
Рассмотрим внешний вид окна программы Проводник (Рис.4)
Рис. 4. Внешний вид окна программы Проводник
Интерфейс этой программы состоит из следующих частей:
Адресная строка для указания пути (местоположения) файла.
Строка меню
Панель инструментов
Панель папок
Панель файлов
Строка состояния
Список рекомендованной литературы
1. Н.В. Макарова. Информатика и ИКТ. Учебник 8-9 класс (базовый уровень). СПб.: Питер, 2010.
2. Босова Л.Л. Информатика и ИКТ: Учебник для 8 класса. – М.: БИНОМ. Лаборатория знаний, 2012
3. Босова Л.Л. Информатика: Рабочая тетрадь для 8 класса. – М.: БИНОМ. Лаборатория знаний, 2010.
Рекомендованные ссылки на ресурсы интернет
1. CIT Форум (Источник).
2. On-line-teaching.com (Источник).
Рекомендованное домашнее задание
1. § 2.4 – 2.5.2. Босова Л.Л. Информатика и ИКТ: Учебник для 8 класса. – М.: БИНОМ. Лаборатория знаний, 2012 г.
2. По каким причинам интерфейс операционной системы Windows можно считать дружественным для пользователя?
3. Что такое файл и файловая система? Назовите известные вам расширения файлов, приведите примеры.
4. Какие основные файловые менеджеры вы знаете?
Интерфейс — это комплекс программ, организовывающих взаимосвязь персонального компьютера:
Интерфейс — это комплекс программ, организовывающих взаимосвязь персонального компьютера:
-
с пользователем – пользовательский интерфейс
-
с аппаратными средствами – аппаратный интерфейс
-
с программами – программный интерфейс
Пользовательский интерфейс Windows является графическим, т.к. позволяет осуществлять взаимодействие человека с компьютером в форме диалога с использованием окон, меню и элементов управления (диалоговых панелей, кнопок и т.д.).
Основные операции, выполняемые с помощью мыши
-
левый щелчок — однократное нажатие и отпускание основной (обычно левой) кнопки мыши;
-
правый щелчок — однократное нажатие и отпускание дополнительной (обычно правой) кнопки мыши;
-
двойной щелчок — два нажатия основной кнопки мыши с минимальным интервалом времени между ними;
-
перетаскивание (протаскивание) — нажатие левой или правой кнопки мыши и перемещение объекта с нажатой кнопкой.
-
специальное перетаскивание — выполняется так же как и перетаскивание, но с нажатой правой кнопкой мыши, при этом появляется ниспадающее меню, в котором выбирается действие.
Элементы графического интерфейса Windows:
Элементы графического интерфейса Windows:
-
Рабочий стол. На нем, как и на обычном рабочем столе расположены различные программы и инструменты, представленные в виде значков, или иконок.
-
Объекты (папки, значки, ярлыки)
Значки. Значками в Windows обозначаются программы, документы. Запуск производится двойным щелчком кнопки мыши по значку. Программа может быть расположена непосредственно на Рабочем столе, а может быть скрыта глубоко на диске, но и в этом случае представлена на Рабочем столе своим образом – ярлыком.
Ярлыки. Ярлык программы – это не сама программа, а только путь к ней, указание на то место на диске, где она находится. Двойной щелчок по ярлыку также вызывает запуск программы. Ярлыки от значков отличаются наличием небольшой стрелочки внизу слева.
-
Панель задач. Располагается в нижней части экрана, имеет вид полосы. На ней находятся: кнопка Пуск, кнопки открытых окон, индикаторы и часы.
-
Кнопка Пуск. Является элементом Панели задач. Обычно располагается в левом нижнем углу экрана. Щелчком на этой кнопке открывается Главное меню – мощный инструмент управления, работая с которым можно сделать абсолютно все, что только можно сделать в системе Windows.
-
Окно – один из главных элементов интерфейса Windows. Окно – это обрамленная часть экрана, в которой отображается приложение, документ или сообщение. Поэтому выделяют окно приложения, окно документа или диалоговое окно.
Элементы управления Windows
Элементы управления Windows
Диалоговые окна очень широко применяются для настройки системы Windows. Набор разных видов элементов управления диалоговых окон не очень обширен, но в отдельных ситуациях могут использоваться и нестандартные элементы управления.
-
Кнопка (командная кнопка). Представляет собой прямоугольник с надписью. Он изображен таким образом, что кажется выпуклым. Кнопки используют для выполнения таких команд, которые сопровождаются закрытием диалогового окна, изменением его содержания или открытием нового диалогового окна. Чтобы воспользоваться кнопкой, на ней надо щелкнуть. Одна из кнопок диалогового окна, как правило, является выделенной и обведена черной рамкой. Нажатие клавиши ENTER равносильно щелчку на выделенной кнопке диалогового окна. Например, ОК, отмена.
-
Текстовое поле (поле). Представляет собой белый прямоугольник, как бы «утопленный» в диалоговое окно. Текстовое поле предназначено для ввода одной строки текста (или числового значения). При щелчке на этом поле в нем появляется курсор, а прежний текст выделяется. При редактировании содержимого текстового поля можно использовать стандартные операции редактирования и даже передавать и получать данные из буфера обмена. Например, Имя файла
-
Текстовая область. Аналог текстового поля, используемый для отображения текста из нескольких строк. Редактирование этого текста может быть разрешено или запрещено. Если текст не помещается в текстовую область полностью, по краям области могут располагаться полосы прокрутки.
-
Список. Представляет собой прямоугольную область, в которой в горизонтальных строчках располагаются пункты списка. При необходимости справа располагается вертикальная полоса прокрутки. Обычно возможен выбор лишь одного из пунктов, хотя бывают списки, позволяющие выбрать несколько пунктов. Выбрать определенный пункт можно с помощью щелчка мыши или клавишами ВВЕРХ и ВНИЗ. В современных программах иногда используют дополнительные виды списков, представляющие собой, например, «дерево папок» или другую сложную структуру. Например, Свойства экрана – узор.
-
Раскрывающийся список. Выглядит как текстовое поле, содержащее справа раскрывающую кнопку. При щелчке на этой кнопке под полем раскрывается список, в котором можно выбрать нужный пункт. Если щелкнуть на поле списка, то перебирать пункты можно с помощью клавиш ВВЕРХ и ВНИЗ. Комбинация клавиш ALT+ВНИЗ позволяет раскрыть список. Например, Настройка даты – месяц (предложенные варианты)
-
Поле со списком. Представляет собой комбинацию текстового поля и списка (обычного или раскрывающегося). Выглядит как раскрывающийся список или как текстовое поле, под которым располагается обычный список. Отличается тем, что содержимое этого поля не обязательно выбирать из списка, а можно ввести с помощью клавиатуры. Оно не обязано совпадать с одним из пунктов, содержащихся в списке. Например, Размер шрифта – 12
-
Счетчик. Представляет собой специальное поле для ввода числового значения. Выглядит как текстовое поле с двумя кнопками справа. Щелчок на кнопках увеличивает или уменьшает значение на единицу. Нужное значение можно ввести в поле и с помощью клавиатуры. Иногда используют комбинированные счетчики, позволяющие задать несколько числовых значений при помощи одной пары кнопок. Например, Настройка даты – год
-
Вкладка. Отдельная страница диалогового окна. Диалоговое окно может содержать несколько вкладок. Вкладка состоит из корешка, на котором написано название вкладки, и страницы, на которой располагаются элементы управления. Чтобы выбрать определенную вкладку, достаточно щелкнуть на ее корешке. Если название вкладки выбрано (обведено пунктирной рамкой), то для перехода к другим вкладкам можно использовать клавиши ВЛЕВО и ВПРАВО. Например, Справка – три вкладки
-
Флажок. Представляет собой элемент управления, позволяющий разрешить или запретить определенное действие. Состоит из белого квадратика и подписи, описывающей назначение флажка. Если флажок установлен, то квадратик помечается «галочкой» и указанное действие разрешается. У сброшенного флажка квадратик пуст. Флажки переключают щелчком мыши или нажатием клавиши ПРОБЕЛ. Например, Шрифт – контур, зачеркнутый, двойное зачеркивание
-
Переключатель. Используется для выбора одной возможности из нескольких. Переключатели всегда встречаются группами по несколько элементов. Переключатель включается щелчком мыши или нажатием клавиши ПРОБЕЛ. При включении переключателя остальные переключатели этой группы выключаются, так что включен может быть один и только один переключатель в группе. Включенный переключатель помечается черной точкой. Например, Завершение работы – перезагрузка, выключить.
-
Группа элементов. Несколько элементов управления диалогового окна, тематически связанные между собой, могут быть объединены в группу и заключены в рамку, которая может быть снабжена подписью. Это делается исключительно для наглядности. Например, Настройка даты – ДАТА, а в ней три элемента: счетчик – год, раскрывающийся список – месяц, специальный элемент — число
-
Область предварительного просмотра. При проведении сложных многосторонних настроек иногда трудно оценить, что же получится в итоге. В таких случаях диалоговые окна могут содержать область предварительного просмотра, в которой в уменьшенном и упрощенном виде отображаются результаты настройки. В некоторых случаях эту область можно использовать для отбора настраиваемых параметров. Например, Шрифт – выделенный текст, меню формат — шрифт
-
Палитра. Разновидность раскрывающегося списка. Здесь вместо текстовых пунктов применяются цветовые обозначения, значки или другие объекты. Используется в тех случаях, когда текстовое описание пункта недостаточно или, наоборот, излишне, например при выборе цвета. Выбираемый пункт обычно помечается темной рамкой. Например, Заливка
-
Специальные элементы управления. В некоторых диалоговых окнах могут использоваться специальные элементы управления, не вписывающиеся в приведенную классификацию. Так как диалоговые окна служат для настройки самых разнообразных параметров, некоторые из этих параметров удобнее задавать особым образом. В таких случаях в программах появляются специальные элементы управления, подходящие для конкретной ситуации. Например, календарь для выбора текущего числа относится как раз к нестандартным элементам управления. Такое представление намного нагляднее, чем использование счетчика или раскрывающегося списка. Например, Дата — число
Используя материалы сайта, справки Windows и интернет ответьте на вопросы:
-
-
Что такое операционная система?
-
Что такое файл?
-
Что такое контекстное меню? Каким образом запускается?
-
Какая информация содержится в свойствах диска, папки, файла, объектов: Мой компьютер, Корзина, Рабочий стол? Сравните ее.
-
Что такое панель задач? Ее назначение.
-
Перечислите основные элементы окна Windows.
-
Перечислите основные элементы управления среды Windows.
-
Что такое ярлык? Перечислите способы создания ярлыка.
-
Перечислите основные объекты, хранящиеся на Рабочем столе.
-
Перечислите основные приемы управления мышью
-
Назначение приема управления мышью – «протягивание».
-
Назначение приема управления мышью – «специальное перетаскивание».
-
Что такое буфер обмена?
-
Какие типы меню вы знаете?
-
Для какой цели проводится архивация файла? Какие архиваторы вы знаете?
-
Ответы предоставьте в виде текстового файла.
Это перевод About Windows. Автор: MSDN.
Эта статья описывает программные элементы, которые приложения могут использовать для создания и управления окнами; управления отношениями между окнами; изменения размера, перемещения и отображения окон.
Содержание:
- Окно рабочего стола
- Окна приложений
- Клиентская область
- Неклиентская область
- Элементы управления и диалоговые окна
- Атрибуты окон
- Имя класса
- Имя окна
- Стили окна
- Дополнительные стили
- Положение
- Размер
- Описатель родительского окна или окна-владельца
- Описатель меню или идентификатор дочернего окна
- Описатель экземпляра
- Пользовательские данные
- Оконный описатель
- Примечания переводчика (специфика Delphi)
- Окна в VCL
- Окно Application
- Модальные окна
Окно рабочего стола
Когда вы запускаете систему, она автоматически создаёт окно рабочего стола (desktop window). Окно рабочего стола — это системное окно, которое отвечает за отрисовку фона экрана и служит базой для всех остальных окон, показываемых приложениями. И поэтому, окно рабочего стола является особым окном.
Окно рабочего стола использует растр (bitmap) для рисования фона экрана. Этот рисунок называется обоями рабочего стола (desktop wallpaper). По умолчанию окно рабочего стола использует растр из .bmp файла, указанного в настройках системы.
Функция GetDesktopWindow
возвращает описатель окна рабочего стола.
Приложения настройки системы (такие как апплет Панели управления) могут изменять обои рабочего стола, используя функцию SystemParametersInfo
с wAction = SPI_SETDESKWALLPAPER
и lpvParam = имени файла с обоями. Функция SystemParametersInfo
загрузит растр из указанного файла и будет использовать его для отрисовки фона экрана, и, кроме того, сохранит имя файла в настройках.
Окна приложений
Каждое графическое приложение Windows имеет как минимум одно окно, называемое главным окном (main window), которое обеспечивает первичный интерфейс между пользователем и приложением. Большинство приложений создаёт дополнительные окна (явно или неявно), чтобы выполнять задачи приложения. Каждое окно играет свою роль в отображении информации и приёма ввода от пользователя.
Когда вы запускаете приложение, система также ассоциирует с приложением кнопку на панели задач (taskbar button). Кнопка на панели задач содержит значок программы и заголовок. Когда приложение активно, эта кнопка показывается как нажатая, либо выделяется цветом.
Окно приложения может включать в себя элементы вроде заголовка (title bar), оконного меню (window menu, ранее известного как «системное меню»), меню (menu bar), кнопок минимизации и максимизации, кнопки восстановления (restore button), кнопки закрытия (close button), бордюра (border), клиентской области (client area), горизонтальной и вертикальной полосок прокрутки (scroll bar). Главное окно приложений часто включает в себя все эти элементы сразу. Рисунок ниже иллюстрирует эти элементы в типичном главном окне программы:
Клиентская область
Клиентская область (client area) является той частью окна, где приложение показывает основную информацию (текст или графику). Например, текстовый редактор отображает документ в клиентской области главного окна. Чтобы управлять клиентской областью окна (принимать ввод пользователя и отображать в ней информацию), приложение должно указать функцию обратного вызова, называемую оконной процедурой (window procedure). См. Window Procedures для дальнейшего обсуждения.
Неклиентская область
Заголовок, меню, оконное меню, кнопки минимизации, максимизации, закрытия и восстановления, бордюр и полосы прокрутки собирательно называются неклиентской областью окна (nonclient area). Система автоматически управляет большинством аспектов неклиентской области; приложение же управляет поведением клиентской области окна.
Заголовок окна (title bar) показывает значок окна (указывается приложением) и строку текста; обычно текст указывает название приложения и цель окна. Приложение указывает значок и текст при создании окна. Кроме того заголовок также позволяет перемещать окно по экрану, используя мышь или иное указующее устройство.
Большинство приложений добавляют окнам меню (menu bar), которое включает в себя команды, поддерживаемые приложением. Элементы в полоске меню соответствуют категориям команд меню. Щелчок по элементу меню обычно приводит к его «раскрытию»: показу всплывающего меню с элементами, соответствующими заданной категории. Щёлкая по элементу-команде, пользователь просит приложение выполнить эту задачу.
Оконное меню (window menu) создаётся и управляется системой (и поэтому оно ранее называлось системным меню). Оно содержит стандартный набор команд по управлению окном — вроде изменения размера и положения окна, его закрытия. Для получения дальнейшей информации — см. Menus.
Кнопки в верхнем-правом углу окна влияют на размер и положение окна. Когда пользователь щёлкает по кнопке максимизации (maximize button), система увеличивает окно до размера текущего монитора, так что оно займёт весь рабочий стол минус панель задач (в одномониторной конфигурации). Одновременно с этим система заменит кнопку максимизации кнопкой восстановления. Когда вы щёлкаете по кнопке восстановления (restore button), система восстанавливает окно на его исходной позиции и с исходным размером. Когда вы щёлкаете по кнопке минимизации (minimize button), система уменьшает окно до размера её кнопки на панели задач, размещает окно поверх его кнопки на панели задач и показывает кнопку на панели задач в поднятом (нормальном) состоянии (прим. пер.: это описание — упрощение). Чтобы восстановить приложение с его исходными положением и размерами — щёлкните по кнопке в панели задач. Когда вы щёлкаете по кнопке закрытия (close button), приложение выходит.
Бордюр (border) — это область по периметру окна, которая позволяет пользователю изменять размер окна, используя мышь или иное указующее устройство.
Полосы прокрутки (scroll bar) переводят ввод с клавиатуры и мыши в смещения, которые используются приложением для сдвига содержимого клиентской области. К примеру, приложение текстовый редактор может показывать большой документ с вертикальной полосой прокрутки, чтобы пользователь мог использовать её для перемещения по документу.
Элементы управления и диалоговые окна
Приложение может создавать несколько типов окон в дополнение к его главному окну, включая элементы управления (controls) и диалоговые окна (dialog box).
Элемент управления (control) — это окно, которое приложение использует для получения информации от пользователя. Приложения также используют элементы управления, чтобы управлять определённой возможностью приложения. К примеру, элементами управления являются кнопки, списки, поля ввода, дополнительные полосы прокрутки, панели, панели инструментов и т.п. Для дальнейшей информации -см. Windows Controls.
Элементы управления не могут использовать сами по себе и всегда используются с другим окном — обычно, диалоговым окном. Диалоговое окно (dialog box) — это окно, которое содержит один или более элементов управления. Приложение использует диалоговые окна, чтобы запросить у пользователя информацию для выполнения команды. К примеру, приложение, которое имеет команду открытия файла, может показывать диалоговое окно, которое включает в себя элементы управления для указания имени и пути файла. Диалоговые окна обычно не используют те же компоненты окна, что и главные окна приложения. Большинство диалоговых окон имеют заголовок, системное меню, кнопки минимизации/максимизации и закрытия, бордюр (часто — не позволяющий менять размеры окна) и клиентскую область, но они обычно не имеют меню и полос прокрутки. Для получения дополнительной информации — см. Dialog Boxes.
Окно-сообщение (message box) — это специальное диалоговое окно, которое показывает сообщение, предупреждение или сообщение об ошибке пользователю. К примеру, окно-сообщение может использоваться, чтобы сообщить пользователю о невозможности выполнения запрошенной им операции. Для дальнейшей информации — см. Message Boxes.
Оконные атрибуты
Приложение должно указывать следующую информацию при создании окна (за исключением оконного описателя, который создаёт сама функция создания окон):
- Имя класса
- Имя окна
- Стиль окна
- Дополнительный стиль окна
- Положение
- Размер
- Описатель родительского окна или окна-владельца
- Описатель меню или идентификатор дочернего окна
- Описатель экземпляра
- Пользовательские данные
- Оконный описатель
Эти оконные атрибуты описываются ниже.
Имя класса
Каждое окно принадлежит оконному классу. Приложение должно зарегистрировать оконный класс до создания окна этого класса. Оконный класс (window class) определяет большинство аспектов поведения и отображения окна. Главным компонентом оконного класса является оконная процедура (window procedure) — функция обратного вызова, которая принимает весь ввод пользователя и все запросы, отправленные окну. Система предоставляет ей ввод и запросы в виде оконных сообщений (window message). Для дальнейшей информации — см. Window Classes, Window Procedures и Messages and Message Queues.
Имя окна
Имя окна (window name) — это текстовая строка, которая идентифицирует окно для пользователя. Главное окно, диалоговое окно или окно-сообщение обычно показывают это имя в заголовке окна. Элемент управления также может показывать имя окна, в зависимости от своего оконного класса. К примеру, кнопки, поля ввода и статический текст показывают имя окна в прямоугольнике элемента управления. С другой стороны, элементы вроде списков и списков выбора не показывают имена окон.
Чтобы изменить имя окна после создания окна, используйте функцию SetWindowText
. Используйте функции GetWindowTextLength
и GetWindowText
для получения имени окна.
См. также: тайная жизнь GetWindowText
.
Стиль окна
Каждое окно имеет один или несколько оконных стилей. Оконный стиль (window style) — это числовая константа, которая определяет аспект поведения или отображения, не указанный в оконном классе. Приложение обычно устанавливает стили во время создания окна. Но оно также может изменить некоторые стили после создания окна, используя функцию SetWindowLong
.
Стили интерпретируются системой и, в некотором роде, оконной процедурой класса окна.
Некоторые оконные стили применимы к любым окнам, но большинство стилей специфичны для оконных классов. Общие стили представлены константами, которые начинаются с префикса WS_
; вы можете комбинировать стили, используя оператор or
. Стили окна, специфичные для оконного класса, определяют поведение и отображение окон, принадлежащих этому классу. К примеру, класс SCROLLBAR
создаёт элемент управления «полоса прокрутки». При этом стили SBS_HORZ
и SBS_VERT
указывают создаётся ли вертикальная или горизонтальная полоса прокрутки.
Вот описание стилей для некоторых стандартных системных оконных классов:
- Window Styles
- Button Styles
- Combo Box Styles
- Edit Control Styles
- List Box Styles
- Rich Edit Control Styles
- Scroll Bar Control Styles
- Static Control Styles
Расширенный стиль окна
Каждое окно опционально может иметь один или несколько дополнительных (расширенных) оконных стилей. Расширенный оконный стиль (extended window style) — это числовая константа, которая определяет аспект окна, не указанный в классе окна или простом стиле окна. Приложение обычно устанавливает расширенные стили во время создания окна. Но оно также может изменить некоторые стили после создания окна, используя функцию SetWindowLong
.
Для дальнейшей информации — см. CreateWindowEx
.
Положение
Положение окна определяется как координаты его левого-верхнего угла, измеряемые в пикселях экрана. Эти координаты (иногда называемые оконными координатами (window coordinates)) всегда относительны левого-верхнего угла экрана или (для child окон) — левого-верхнего угла клиентской области родительского окна. К примеру, окно верхнего уровня с координатами (10,10) размещается на 10 пикселей правее левого-верхнего угла экрана и на 10 пикселей ниже его. С другой стороны, child окно с координатами (10,10) размещается на 10 пикселей правее и на 10 пикселей ниже левого-верхнего угла клиентской области родительского окна.
Функция WindowFromPoint
ищет окно, занимающее указанную точку на экране, и возвращает его описатель. Аналогичным образом, функция ChildWindowFromPoint
и функция ChildWindowFromPointEx
возвращают описатель дочернего окна, занимающего указанную точку в родительском окне. Хотя ChildWindowFromPointEx
может игнорировать невидимые, отключенные и прозрачные окна — ChildWindowFromPoint
перечисляет их все.
Размер
Размер окна (высота и ширина) измеряется в пикселях. Окно может иметь нулевую высоту или нулевую ширину. Если приложение задаст нулевые высоту или ширину, то система установит размер в минимально допустимый. Чтобы определить минимально возможный размер окон, приложение может вызвать функцию GetSystemMetrics
с флагами SM_CXMIN
и SM_CYMIN
.
Приложению может потребоваться создать окно с клиентской областью определённого размера (обычно приложение задаёт размеры окна, а клиентская область получается по окну за вычетом размера рамки, заголовка и т.п.). Функция AdjustWindowRect
и функция AdjustWindowRectEx
могут быть использованы для вычисления нужного размера окна, основываясь на желаемом размере клиентской области окна. Приложение может передать вычисленные значения размера в функцию CreateWindowEx
.
Приложение может изменить размер окна на чрезмерно большой; однако ему не следует изменять размер окна на размер, больший экрана. До изменения размеров окна, приложение может узнать размеры экрана, используя функцию GetSystemMetrics
с флагами SM_CXSCREEN
и SM_CYSCREEN
.
Описатель родительского окна или окна-владельца
Окно может иметь родительское окно. Окно, которое имеет родительское окно, называется дочерним окном (child window). Родительское окно (parent window) предоставляет своим дочерним окнам систему координат для относительного позиционирования. Если у окна есть окно-родитель, то это влияет на его отображение; к примеру, дочернее окно обрезается так, чтобы оно не выходило за пределы родительского окна и (опционально) за пределы клиентской области родительского окна. Окно, у которого нет родителя, либо же родительским окном является окно рабочего стола, называется окном верхнего уровня (top-level window). Приложение может использовать функцию EnumWindows
, чтобы получить описатель каждого окна верхнего уровня в системе.
Кроме того, окно может владеть другим окном или иметь окно-владельца (owner window). Владетельное окно всегда появляется поверх своего владельца, оно также сворачивается, когда сворачивается его владелец, и уничтожается, когда уничтожается его владелец. Для дальнейшей информации — см. Owned окна.
Описатель меню или идентификатор дочернего окна
Child окно может иметь идентификатор дочернего окна (child-window identifier) — это уникальное число, присваиваемое приложением. Идентификатор дочернего окна особенно полезен для приложений, создающих несколько дочерних окон. Когда приложение создаёт дочернее окно, оно может указать идентификатор для этого окна. После создания окна приложение может поменять идентификатор функцией SetWindowLong
или получить его функцией GetWindowLong
.
Каждое окно, кроме child-окон, может иметь меню. Приложение может добавить меню в окно, указав описатель меню либо при регистрации оконного класса, либо непосредственно при создании окна.
Описатель экземпляра
Каждый исполняемый модуль (exe или DLL) имеет описатель, ассоциированный с ним. Система использует этот идентификатор, чтобы отличать оконные классы, создаваемые разными модулями.
Пользовательские данные
Каждое окно может иметь ассоциированные с ним пользовательские данные, не используемые системой. Когда создаётся окно, система передаёт указатель на пользовательские данные в оконную процедуру создаваемого окна. Оконная процедура может использовать эти данные для инициализации окна и (опционально) для сохранения данных с окном.
Описатель окна
После создания окна функция создания возвращает оконный описатель (window handle), который уникально идентифицирует окно в системе. Оконный описатель имеет тип HWND
. Приложение может использовать этот описатель в других функциях работы с окнами.
Примечания переводчика
Приложения Delphi имеют некоторые особенности по сравнению с вышеизложенным материалом.
Предупреждение: я не являюсь экспертом в интерфейсе пользователя, поэтому текст ниже может содержать ошибки.
Окна в VCL
В Delphi вся работа с окнами заключается в класс-оболочку TWinControl
. Формы, кнопки, списки — всё это классы, наследуемые от TWinControl
. К примеру: TForm1 -> TForm -> TCustomForm -> TScrollingWinControl -> TWinControl
или TButton -> TCustomButton -> TButtonControl -> TWinControl
.
У каждого объекта типа TWinControl
есть описатель — свойство Handle
типа HWND
. Этот описатель создаётся по запросу — при первом обращении к свойству Handle
. Эту проверку выполняет метод HandleNeeded
. Создание описателя выполняет метод CreateHandle
, который является обёрткой к методу CreateWnd
. Фактически, метод CreateHandle
просто вызывает CreateWnd
, выполняя пост-настройку объекта после создания окна (настройка якорей и ассоциация объекта TWinControl
с окном).
Само создание окна выполняется так: сперва метод CreateWnd
строит параметры окна, используя метод CreateParams
, который заполняет запись типа TCreateParams
. Эти параметры проверяются на допустимость, в них записывается оконная процедура и вызывается метод CreateWindowHandle
, который, собственно, и создаёт окно (и является простой обёрткой к функции CreateWindowEx
).
Если вы заинтересованы в изменении создаваемого окна, то вы можете заместить метод CreateParams
(если вам нужно просто поменять параметры создания окна), CreateWindowHandle
(если вы хотите задавать параметры явно вручную), либо CreateWnd
(если вы хотите сделать пост-обработку создания окна).
Оконной процедурой (точкой входа) в TWinControl
является метод MainWndProc
. Этот метод не виртуален, но всё, что он делает — вызывает настоящую оконную процедуру WindowProc
, обернув вызов в try
/except
и вызывая Application.HandleException
при ошибке. Именно это — то самое место, в котором вы получаете сообщение об ошибке при исключении в обработчике сообщения (например, нажатия на кнопку) вместо вылета программы. Сама же оконная процедура WindowProc
является и вовсе свойством, которое можно присвоить в любое значение (для установки своей оконной процедуры). По умолчанию, WindowProc
указывает на (виртуальный) метод WndProc
того же объекта. Как правило, если вы хотите дополнить или заменить оконную процедуру, то вы должны заметить метод WndProc
в классе-наследнике (если вы хотите выполнить замещение в «вашем» классе), либо изменить свойство WindowProc
(если вы хотите изменить поведение внешнего объекта).
Метод WndProc
является конечной реализацией оконной процедуры. Собственно, это даже не «изобретение» TWinControl
— этот метод появился у предка TWinControl
: TControl
. TControl
является базовым классом для всех элементов управления, необязательно оконных. Оконные элементы управления наследуются от TWinControl
.
Таким образом, цепочка вызовов при обработке сообщений выглядит так: MainWndProc -> WindowProc -> WndProc
. WndProc
может сама обработать сообщение, а может оставить его на обработку по умолчанию. В последнем случае сообщение дополнительно проходит такой путь: WndProc -> Dispatch -> DefaultHandler -> DefWndProc
. Метод Dispatch
сначала пытается направить сообщение message-методам. И только при их отсутствии — вызывает DefaultHandler
. DefWndProc
вызывается только для оконных контролов при наличии описателя. Таким образом, если вы заинтересованы в необработанных сообщениях — то вам нужно использовать DefWndProc
для окон и DefaultHandler
для неоконных контролов.
Заметьте, что Dispatch
, DefaultHandler
и message-методы вводятся аж в TObject
, что означает доступность диспетчеризации сообщений для любого объекта Delphi.
Почти все вышеупомянутые методы являются виртуальными — т.е. доступными для замещения и модификации в классах-наследниках, что позволяет нам менять стандартное поведение в широких пределах.
TComponent
(который является предком TControl
, а, следовательно и TWinControl
) вводит понятие «владельца» компонента (Owner). Заметьте, что это не то же самое понятие, что окно-владелец в терминах системы, как обсуждается выше. Окно-владелец и окно-родитель (в терминах системы) указываются одинаковым образом — как поле WndParent
в записи TCreateParams
, параметр hWndParent
в функции CreateWindowEx
и аналогичных местах. То, как трактуется это окно (как родитель или владелец) зависит от типа создаваемого окна (дочернее или верхнего уровня). Поведение этих окон описано выше.
Delphi же вводит понятие владельца в ином смысле. Владелец (в терминах Delphi) — это компонент, который отвечает за удаление владеемого компонента. Его можно указать при создании компонента, либо сменить/задать уже после создания (что бывает редко). При удалении компонента-владельца удаляются и все компоненты, которыми владеет владелец. Вы можете не указывать владельца, если хотите удалять компонент сами, вручную. Как правило, форма является владельцем всех компонентов, размещённых на ней.
Вам не следует путать владельца в терминах системы и владельца в терминах Delphi. Владелец в терминах системы отвечает за взаимодействие окон. Владелец в терминах Delphi не связан с окнами, он контролирует время жизни объекта. Фактически, он применим также и к неоконным элементам управления и даже невизуальным компонентам.
Примечание: Delphi также позволяет вам изменить родительское окно уже после создания объекта. Это позволяет вам сделать «перескакивание» дочернего контрола с одного контейнера (формы, панели) на другой.
Окно Application
Следующий тонкий момент связан со специальным окном Application в Delphi. Как вам должно быть известно, в Delphi есть глобальный объект Application
, представляющий собой «приложение». В нём содержатся глобальные параметры и некоторые служебные методы-помощники. Сейчас нас интересует тот факт, что в Application
есть окно. Это — служебное окно. Его описатель доступен через свойство Application.Handle
. Это окно является обычным окном. Оно видимо, находится на экране (в центре), но… имеет нулевой размер! Так что реально вы его увидеть не можете, не можете и щёлкнуть по нему.
Примечание: окно Application
создаётся только в программе, но не в DLL.
Хорошо, а чем ещё интересно это окно? Вспомните правила, по которым окна появляются на панели задач. Идеология системы: одно окно — одна кнопка. Каждое окно имеет кнопку (некоторые окна не имеют кнопок как служебные), окно не может иметь две кнопки. Если на панели задач есть кнопка, то она имеет взаимно-однозначное соответствие с окном (текст, меню, иконка). Это достаточно простая и понятная модель.
В Delphi принята несколько иная идеология. Кнопка в панели задач представляет собой «приложение», а не отдельное окно. У неё свой заголовок, своя иконка, она сворачивает все окна приложения — и так далее. Поскольку в системе окна работают не так, то Delphi эмулирует такое поведение. Кнопка в панели задач — это, на самом деле, окно Application, а реальные окна программы там не появляются. Все окна приложения имеют владельца — окно Application. Сворачивание приложения на самом деле заключается в скрытии окон (реально сворачивается только окно Application). При этом, конечно же, куча сил уходит на синхронизацию различных состояний между участниками подобной системы. Отсюда идёт множество вопросов вроде «как мне свернуть/развернуть приложение в трей», вопросов про правильную связку окон и им подобных.
Когда вышла Windows Vista, в которой появились новые возможности вроде «живого предпросмотра», анимации сворачивания/разворачивания окон и других Aero-эффектов, обнаружились пробелы в модели эмуляции поведения Delphi. Delphi приложения в новых условиях вели себя не лучшим образом. Реализованная в Delphi эмуляция не смогла покрыть возможности новой системы. Delphi приложения усиленно притворялись нормальными, но это им не удалось.
Поэтому, вместо того, чтобы допиливать эмуляцию до нового уровня (и снова «проиграть» при выходе новой системы Windows с новыми возможностями), разработчики Delphi просто решили играть по правилам системы. Начиная с Delphi 2007 окна ведут себя так, как положено, не пытаясь эмулировать иную концепцию взаимодействия окон. Теперь на панели задач показывается настоящее главное окно (и именно поэтому Application.Title
и Application.Icon
не будут иметь эффекта). Вы можете переключаться между старым и новым поведением приложения переключая свойство MainFormOnTaskBar
. Предполагается, что вы измените его один раз — сразу после вызова Application.Initialize
в .dpr-файле проекта и не будете трогать в дальнейшем.
Я бы рекомендовал по возможности использовать новое поведение на Delphi 2007+. Гораздо лучше, когда ваше приложение играет по правилам системы, и вам будет проще разбираться с вопросами взаимодействия окон (если у вас не будет дополнительного скрытого окна в цепочке).
Заметьте, что новые правила поведения окон отличаются от старых. К примеру, если раньше вы создавали немодальное окно — оно появлялось наравне со старым. Вы могли переключаться между ними и выносить любое из них на передний план. Это потому, что оба окна (и главное и немодальное) были равноценны — они имели окно-владельца Application. Они сворачивались вместе с ним, но между собой они были равны. Теперь же, если вы создадите окно, то ему придётся включить главное окно как своего владельца. Это даст вам сворачивание вместе с владельцем, единую кнопку на панели задач (т.е. старое поведение вида «единое приложение»), но это также будет означать, что вы не сможете вынести на передний план главное окно — вторичное окно всегда будет поверх окна-владельца (как указано в информации выше). Вам нужно научится играть по новым правилам или от чего-то отказаться.
К примеру, вы можете перегрузить CreateParams
и очистить поле WndParent
. Тогда вы получите два равноценных окна, не связанных друг с другом. Вы можете вынести любое из них на передний план, но при этом второе окно будет иметь иконку на панели задач и сворачивание одного окна не приведёт к сворачиванию другого. Вы можете бороться с этим дальше, но… нужно ли? Короче говоря, либо вы связываете окна (и миритесь с ограничениями в виде Z-порядка), либо не связываете (и миритесь с ограничениями в виде… не связанности окон).
Примечание: окно Application
всё ещё создаётся — даже при MainFormOnTaskBar = True
. Но только теперь оно используется лишь для служебных целей — реакции на события системы и т.п., но не для управления окнами приложения, как это было ранее.
Модальные окна
Ещё одним моментом, где Delphi эмулирует нетипичное поведение в системе, являются модальные окна. В дизайне системы модальность предназначена для диалоговых окон, которые создаются специальными функциями по шаблону из ресурса. Причём модальность диалога указывается специальным флагом — DS_MODALFRAME
. Иными словами, это означает, что одно и то же окно не может показываться в разных режимах — модальном и не модальном.
Разумеется, такая модель не подходит для Delphi, где вы можете показывать окно различными способами — вызывая Show
или ShowModal
. Поэтому Delphi не использует системный механизм модальных окон. Вместо этого она эмулирует поведение модальных окон. Когда вы показываете «модальное» окно, VCL отключает все прочие окна в программе, а после окончания показа окна — восстанавливает их доступность. Отключение окна блокирует взаимодействие с пользователем — вы не можете переключиться в окно и вводить в него информацию. Как правило, отключение окна приводит к изменению его вида: окно-контрол показывается «затенённым». Однако окна-формы не изменяют свой вид. Поэтому отключенное окно визуально не отличается от обычного окна. Так что у вас создаётся впечатление, что окно не отключено, а просто сейчас показывается другое (модальное) окно.
Заметьте, что это отличается от модальности в смысле системы. К примеру, приложению приходится рассылать служебные сообщения (вроде WM_CANCELMODE
) вручную и самому делать вложенный модальный цикл. Второе отличие — модальное окно в смысле системы отключает только своего владельца. Модальное же окно Delphi отключает все окна в приложении (т.е. оно «модально» в более сильном смысле). Именно в этом отличии заключается суть флага MB_TASKMODAL
функции MessageBox
: если вы укажете флаг, то вместо поведения по умолчанию (отключения только окна-владельца), система отключит все окна приложения (как это делает Delphi).