Демонстрируя Windows 7 с помощью приложений
🕛 12.02.2009, 20:00
Практически каждые 10 лет мы принимаем серьезное решение обновить приложения Windows (мы будем использовать слова апплет, приложение, программа и инструмент взаимозаменяемо)-исторически Calc (Calculator), Paint (MS Paint или Paint Brush) и WordPad (или Write). В Windows 7 к ним добавился Sticky Notes. Как старожил Microsoft, когда заходит разговор об этих утилитах, я вспоминаю их историю. Я уверен, что многие знакомы с уже ставшим классикой видео, о том, как наш исполнительный директор показывает Windows отделу продаж. И Windows 7 является отличным шансом обновить эти приложения. Целью обновления является не очередной 10-летний рубеж, не просто необходимость добавить что-то новое, а новые возможности для разработчиков интегрировать приложения в общую картину Windows 7. И несмотря на то, что многие используют приложения в качестве своих основных инструментов, на наш взгляд, они призваны продемонстрировать удобство платформы и стать путеводной звездой разработчикам, желающим создавать собственные приложения для Windows 7, хотя в любом случае от их присутствия в системе выигрывает каждый. Мы не ставили перед собой задачу добавить огромное количество функций, поскольку есть более функциональные бесплатные аналоги. Скорее, показать, что нового в Windows. Поэтому давайте постараемся обойтись без просьб о добавлении новых функций редактирования в Paint и новых режимах работы Calculator.Все API, о которых говорится в этой статье, общедоступны и подробно описаны в MSDN в разделе Windows 7. Там же можно найти Windows 7 Developer Guide. Также рекомендую обратиться к сессиям с PDC и WinHEC.
Эта статья является плодом совместных усилий нескольких разработчиков команды Applications and Gadgets во главе с Рийазом Пишори (Riyaz Pishori), групповым программным менеджером. - Стивен
В этой статье мы поговорим о некоторых инновациях платформы Windows 7, и об их воплощении и отражении в приложениях Windows 7. В ней мы уточним некоторые особенности платформы которые разработчики и партнеры могут ожидать от Windows 7 и покажем, как приложения могут продемонстрировать эти инновации. Также речь пойдет о том, как вдохнуть новую жизнь в приложения с точки зрения функциональности и интерфейса приложений, основываясь на ключевых принципах разработки Windows и нововведениях платформы. Наконец, статья послужит в качестве гида для разработчиков приложений и ISV и познакомит их с ключевыми инновациями платформы Windows, позволит увидеть их в действии и понять, как можно использовать эти API в приложениях.
В статье структурирована по подсистемам, и в каждом разделе объясняется, как приложения могут использовать данную подсистему.
Windows Ribbon
Интерфейс Windows Ribbon представляет собой новый насыщенный интерфейс для разработки под Windows. Windows Ribbon привнес хорошо знакомый по Office 2007 интерфейс в Windows 7, сделав его доступным разработчикам приложений и ISV-партнерам.
У Windows Ribbon есть масса преимуществ, о которых неоднократно говорилось в блогах Office 2007. Интерфейс Ribbon (иначе называемый ленточным интерфейсом или лентой) представляет собой графически насыщенный интерфейс, объединяющий команды приложений в одном месте не скрывая их в глубинах меню или панелей. Прямолинейный и не требующий дополнительных разъяснений Ribbon UI группирует логически связанные команды. При использовании приложений, созданных на базе Ribbon, пользователь может сосредоточиться на своем рабочем окружении и задаче, не отвлекаясь на поиск в дебрях меню нужной команды. Ribbon UI обеспечивает последовательность интерфейса в сравнении с панелями, которые можно настраивать с точки зрения их размера, расположения и содержимого. Новый интерфейс обладает улучшенной клавиатурной поддержкой. Кроме того, Ribbon никоим образом не зависит от используемого масштаба (DPI) и темы. Разработка и внесение изменений в пользовательский интерфейс стали проще и быстрее благодаря программной модели, основанной на разметке XML.
Paint и WordPad стали первыми приложениями, на которых испытали платформу Windows Ribbon UI. В Windows 7 оба приложения получили ряд новых функций и их интерфейс нужно было привести в соответствие с общей картиной Windows 7. С нашей точки зрения, Windows Ribbon UI отлично подошел и, в некоторой степени, оживил вид приложений, упростив с ними работу. Эти приложения дали нам возможность продемонстрировать пользователям, разработчикам и ISV платформу Windows Ribbon UI. Многие просят о реализации ленточного интерфейса в Windows Explorer и IE, однако, в Windows 7 мы этого не планировали. Нашей целью в Windows 7 является демонстрация платформы в таких приложениях для работы с документами, как Paint и WordPad.
Эти приложения демонстрируют несколько элементов Windows Ribbon UI. Кнопка Application Menu открывает доступ к командам, которые обычно доступны через меню File. В приложениях используется схожий набор вкладок, состоящий из вкладки Home с большинством команд приложения и вкладки View, на которой размещены опции просмотра изображения или документа. Команды на вкладках объединены в логически связанные группы.
Панель быстрого доступа (quick access toolbar или QAT) присутствует в обоих приложениях -в Paint и в Wordpad, обеспечивая мгновенный доступ к часто используемым функциям, среди которых Save, Undo и Redo. Пользователь может самостоятельно настроить панель через выпадающее панели или с помощью щелчка правой кнопкой мыши на функции, выбрав опцию Add to the QAT.
Некоторые элементы Ribbon-интерфейса повторяются в обоих приложениях, в частности, речь идет о командных кнопках, кнопках-разделителях, галереях, выпадающих меню, флажках и кнопках-переключателях.
В этих приложениях появилась функция Print preview, которая показывает, как будет выглядеть документ при печати. В режиме предварительного просмотра все вкладки скрываются, а при выходе из него вкладки вновь возвращаются на место.
В Paint добавлена контекстная вкладка для редактирования текста. Контекстная вкладка появляется при добавлении/редактировании текста и исчезает, когда процедура завершена. На ней размещены лишь те команды, которые используются при форматировании текста.
Оба приложения поддерживают функцию предварительного просмотра в ribbon-галереях, например, размер и тип шрифта в WordPad и Paint, списки в WordPad, выбор цвета и варианты заливки в Paint. Функция предварительного просмотра позволяет при наведении курсора мыши увидеть результат изменений, а при щелчке ‑ применить. Эта функция является одним из ключевых элементов Ribbon UI и показывает, что новый интерфейс ‑ это не просто большая панель команд, а новый способ взаимодействия.
Вместе с Ribbon-интерфейсом приложения наследуют встроенную поддержку клавиатурных подсказок, обеспечивающую подсказки по всем командам, и готовую поддержку DPI и тем Windows.
Paint и WordPad являются отличным примером тому, как использовать Ribbon UI в MFC-приложениях. Windows Ribbon открывает разработчикам совершенно новые возможности для создания приложений с ленточным интерфейсом. Программная модель и архитектура Windows Scenic Ribbon подчеркивают разделение файла с разметкой и файлов с кодом C++. Сделано это чтобы помочь разработчикам отделить представление и настройки интерфейса от базового кода приложения. Платформа способствует разделению обязанностей между программистом, фокусирующимся на логике приложения и дизайнером, работающим с уровнем представления и макетом. Ribbon UI ‑ это серьезная инвестиция для нас, и в будущем вы должны рассчитывать, что будете все чаще видеть его в наших приложениях, в частности реализацию на .NET Framework, которая была продемонстрирована Скоттом Гатри (Scott Guthrie) на PDC и которая естественным образом будет встроена в Windows 7.
Платформа multi-touch
Как вы, наверное, знаете, Windows 7 обеспечивает поддержку одновременного ввода данных с сенсорных панелей нового поколения, в том числе в приложениях Win32 через сообщения Windows. Развитие технологии multi-touch включает платформу для разработчиков, делающую доступным сенсорные API в приложениях, изменение интерфейса Windows 7 для оптимизации сенсорных сценариев и поддержку "мультисенсорных жестов" в распространенных приложениях. Разработчики с помощью этих API могут самостоятельно определять уровень сенсорной поддержки, которым будут обладать их приложения.
WordPad предлагает пользователям улучшенные возможности просмотра документа за счет поддержки жестов масштабирования и панорамирования. Масштабирование, панорамирование и инерция позволят пользователю без промедлений перейти к нужному фрагменту. С помощью жестов пользователь может масштабировать документ без использования бегунка масштаба. При наличии панели с поддержкой multi-touch пользователь может осуществлять масштабирование с помощью двух пальцев рук. WordPad также поддерживает панорамирование для перемещения между страницами документа. С помощью этого жеста пользователь может прокручивать документ вперед/назад, как с полосой прокрутки.
В редакторе Paint механизм multi-touch используется для рисования пальцами рук. Это приложение в Windows 7 поддерживает одновременное нажатие без использования жестов. Для Paint функция одновременного рисования пальцами рук гораздо более удобнее и предпочтительнее использования жестов масштабирования, панорамирования или вращения. Все новые кисти в Paint поддерживают одновременный ввод и позволяют сразу рисовать несколько линий. Эти кисти чувствительны к давлению, поэтому они обеспечивают сравнительно реалистичное взаимодействие, зависящее от давления на экран. Несмотря на использование в Paint технологии multi-touch, мы сохранили привычное управление везде, где использование одновременного нажатия неудобно: при выборе цвета, при использовании экранной лупы или при вводе текста.
Благодаря новым API с поддержкой одновременного нажатия пользователи Paint и WordPad получат в свое распоряжение более естественные и интуитивные интерфейсы (при условии наличия соответствующего аппаратного обеспечения). На примере этих простых приложений мы хотели показать разработчикам, как можно использовать новые API в своих приложениях.
Панель задач
Sticky Notes (или просто Notes) является расширением приложения TabletPC, доступного в Windows 7. Одним из преимуществ Notes является возможность удобно и быстро прятать/восстанавливать существующие заметки, при этом создать новую заметку не составляет никакого труда. Этого удалось добиться за счет использования одного окна верхнего уровня. Всегда можно свернуть все заметки на панель задач и затем представить их в виде стопки предварительного просмотра одним щелчком мыши. Представление в виде стопки генерируется с помощью Thumbnail preview API, который игнорирует миниатюры панели задач, которые являются перенаправленным снимком открытого окна, а создает свои собственные. Это позволяет приложениям отделить миниатюры от окон верхнего уровня и обеспечить более продуктивную работу, основываясь на сценариях. Это очень важно в тех случаях, когда требуется быстро окинуть взглядом ранее созданную заметку. Панель задач, к слову сказать, кэширует миниатюры окон, поэтому как только панель задач получает от приложения миниатюру, приложению более не надо его сохранять. Но в случае, если содержимое окна изменится, приложение направит панели задач обновленную миниатюру.
Еще одним стильным нововведением панели задач является меню назначений (или jumplist). Это меню появляется при щелчке правой кнопкой на кнопке приложения в панели задач или при наведении курсора на иконку приложения в меню Start. В приложении Sticky Notes не предусмотрено одного основного окна приложения. Это и делает приложение столь легковесным и соответствующим философии Windows 7 - упростить взаимодействие пользователя и ОС, при этом предоставить ему совершенно новые возможности. Сложность состоит в том, чтобы организовать удобный и централизованный доступ к различного рода функциям. Меню назначений помогает перекрыть эти сценарии в простой и понятной форме.
Новые функции панели задач вместе с ее расширяемостью обладают большим потенциалом: они призваны упростить работу пользователей в различных сценариях/приложениях и сделать ее более эффективной.
Поиск
В Windows 7 мы добавили несколько API, которые позволят разработчикам интегрировать различные типы контента в поисковый механизм Windows 7. Sticky Notes является отличным примером использования этих API.
Выполнять поиск по заметкам, сделанным через приложение Sticky Notes, можно прямо из меню Start. Это упрощает и ускоряет поиск необходимой заметки даже тогда, когда само приложение не запущено. Несмотря на то, что технически возможно отыскать и текстовые, и рукописные заметки, мы намеренно отключили поиск рукописных записей, поскольку он гораздо менее успешен ввиду разнообразия почерков. Приложение регистрирует обработчик протокола, который генерирует URL для каждой заметки. У обработчика Sticky Notes Filter запрашивается содержимое каждой заметки, которое впоследствии индексируется инфраструктурой поиска. Затем, когда пользователь осуществляет поиск через оболочку Windows, эти индексы используются для быстрого поиска. При щелчке пользователя на результате открывается ассоциированное приложение с URL, соответствующим сгенерированному обработчиком и связанным с контентом, обработанным индексатором.
Через платформу поиска можно настраивать обработчик фильтра на использование определенного языка - это увеличивает точность поиска и общую языковую поддержку системы.
Причина, по которой мы создали отдельный обработчик протокола для Sticky Notes в дополнение к обычному обработчику Filter, кроется в том, что в приложении используется собственная схема хранения информации, надстроенная над файловой системой Windows, - все заметки хранятся в одном файле с расширением *.snt. Обработчик протокола генерирует URL к каждой отдельной записи (в нашем случае заметкам); обработчик Filter закрепляет содержимое за URL и передает на индексацию.
Этот пример демонстрирует простоту, с которой любое приложение может подключаться к платформе поиска в Windows 7, а также простоту добавления обработчиков поиска, которые могут в значительной степени увеличить удобство работы пользователя с приложением.
Инфраструктура Real-Time Stylus
Real-Time Stylus (RTS) ‑ это инфраструктура, обеспечивающая доступ к событиям, поступающим с перьевых или сенсорных дигитайзеров. С помощью RTS приложения могут получить доступ к информации со стилуса, а разработчик ‑ создавать уникальные сценарии взаимодействия.
Sticky Notes теперь поддерживает и обычный ввод текста, и перьевой ввод в зависимости от присутствующего в системе оборудования. То есть можно оставлять заметки с помощью традиционной клавиатуры, а можно и с помощью стилуса. Более того, на одной заметке могут мирно сосуществовать и обычный текст, и рукописный, хотя эти объекты обрабатываются независимо друг от друга. Размер стикеров автоматически увеличивается при вводе текста.
Для поддержки рукописного ввода в Sticky Notes как раз и используется Real Time Stylus (RTS). В подобных приложениях часто применяются жесты, поэтому в Sticky Notes мы добавили жест для удаления содержимого заметки.
В Paint инфраструктура RTS используется для получения информации с мыши, стилуса или от касания пальца. Paint также регистрирует дополнительные переменные, среди которых давление при нажатии и область нажатия, при условии, что сами дигитайзеры могут снимать эти параметры. С помощью алгоритмов, заложенных в Paint, пользователь может варьировать толщину и длину линий, а также ряд других параметров в зависимости от давления на поверхность или размера области нажатия.
Использование RTS позволяет быстро и просто создавать приложения с поддержкой рукописного ввода и предлагает новые способы взаимодействия пользователя и приложения. Используя стилус, рукописный ввод и жесты, разработчики могут создавать интерактивные приложения нового поколения.
Перезапуск и восстановление
Инфраструктура Windows Error Reporting (WER) представляет собой набор технологий обратной связи, встроенных в Windows 7 и более ранние версии системы (как клиентские, так и серверные). WER позволяет приложениям регистрировать сбои и собирать информацию у тех пользователей, которые дали согласие на это. Собранная информация анализируется для поиска решения по устранению сбоя, построения трендов ошибок и загрузки отладочной информации чтобы упростить авторам приложения устранение причины сбоя.
WER весьма полезна для разработчиков на любом этапе жизненного цикла приложения: в ходе разработки, бета-тестирования, после выпуска продукта для анализа и определения приоритетов по выпуску оперативных исправлений, а также в конце жизненного цикла приложения.
С помощью WER приложения могут регистрировать перезагрузку, вызванную установкой заплаты/обновления к Windows, который привел к завершению работы приложения, а также сбой, вызванный завершением работы приложения или его зависанием. Дополнительно приложения могут восстанавливать утраченные данные с помощью собственных механизмов.
В некоторых приложениях Windows, включая Calculator, Paint и Wordpad, инфраструктура WER используется для сбора и анализа информации. Эти приложения в случае сбоя могут планировать перезапуск и восстановление информации. Программа Sticky Notes тоже может планировать перезапуск и восстанавливать набор стикеров. С помощью WER пользователи разрешают Windows делать снимки и собирать информацию об ошибках с последующим восстановлением открытых в них документов.
Как видите, нашей основной задачей по отношению к приложениям Windows 7 является демонстрация новых API и инноваций, которые теперь доступны разработчикам. Если вы попробуете эти приложения,то увидите, что они не только демонстрируют новые возможности, но и обладают рядом новых функций, о которых так часто просили пользователи. Вот лишь некоторые из них: режимы вычислений и шаблоны в Calculator, новые кисти, формы и поддержка multi-touch в Paint, поддержка ODF в WordPad, поддержка рукописного ввода и интеграция с панелью задач и поиском в Sticky Notes. Возможно, что мы не будем ждать очередных 10 лет, чтобы обновить их вновь.
Рийаз Пишори (Riyaz Pishori) и команда