Программисту-профессионалу(С) СК Пресс 11/95
Во всех спорах о степени изменения основ Windows 95 по сравнению с Windows 3.1 никто не отрицал, что пользовательский интерфейс радикально пересмотрен во всем, что касается внешнего вида, новых настраиваемых средств управления и замены сочетания Program Manager/File Manager (диспетчера программ/Диспетчера файлов), которые олицетворяли собой Windows 3.1 в глазах столь многих пользователей. Это дает вам возможность и ставит перед вами задачу перестройки пользовательского интерфейса в ваших прикладных программах.
В статье "Стиль программирования: пользовательский интерфейс Windows 95" (PC Magazine/Russian Edition, 9/95) мы обсудили некоторые рекомендации по стилям в Windows 95. С тех пор мы получили новые сведения, которые приводим сегодня во врезке "Новые пиктограммы". Здесь же мы подробно рассмотрим некоторые элементы интерфейса и обсудим соответствующие рекомендации, например для настройки (Setup). Как вы возможно знаете, руководство по стилям имеется в электронной форме в бета-версии SDK (Software Development Kit - комплект для разработчиков), где оно названо The Windows Interface Guidelines - A Guide for Designing Software (Рекомендации по интерфейсу Windows - Руководство по разработке программ).
Новые пиктограммы
В рубрике "Программисту-профессионалу" (PC Magazine/Russian Edition, 9/95, я написал, ссылаясь на рекомендации фирмы Microsoft по стилям Windows 95, что вы получите пиктограммы трех форматов: малого (16х16 пиксел, 16 цветов), большого (32х32 пиксел, 16 цветов) и нового формата высокого разрешения (48х48 пикселов, 256 цветов). С тех пор появилась новая информация, касающаяся в основном нового формата.
Малая пиктограмма используется в верхнем углу заглавной линейки (где в Windows 3.x располагаютс кнопки системного меню) и в линейке задач, большие пиктограммы - в обзорных окнах Explorer и на поверхности рабочего стола. Пиктограммы нового формата, однако, применяются только в особых условиях, по крайней мере пока. В списке свойств (Property Sheet) отображения есть элемент, который позволяет пользователю задать размер пиктограммы на рабочем столе. По умолчанию это 32х32. Увеличив размер до 48, пользователь увидит любую из предусмотренных вами пиктограмм увеличенной до 48х48. При этом, однако, в прикладных программах, включая системные, в которых нет пиктограмм 48х48, другие пиктограммы будут выглядеть столь непривлекательно, что вероятно найдется немного пользователей, которые захотят перейти на этот формат. Могу добавить, что до момента написания этих строк в комплекте SDK не упоминалось о средствах создания новых пиктограмм высокого разрешения.
Пока пиктограммы размером 48х48 представляютс заделом на будущее. Фирма Microsoft утверждает, что они могут найти применение в перспективных усовершенствованиях системы, но, если ваши возможности в программировании ограниченны, вы можете пренебречь новым форматом. Windows 95 предъявляет к вам, как программисту, повышенные требования, поскольку предполагается, что вы будете иметь дело с вопросами, которыми раньше не занимались. Пусть вас хватит хотя бы на текущие дела.
Барри Саймон
В своей конфигурации по умолчанию "рабочий стол" Windows 95 имеет специальную область под названием "линейка задач" (taskbar), расположенную внизу экрана. Средняя часть линейки заданий содержит прямоугольные кнопки, похожие на пиктограммы внизу экрана Windows 3.1 и отличающиеся только тем, что они видны даже тогда, когда окно прикладной программы не свернута. Дл каждой исполняемой программы имеется соответствующа кнопка. Реальные пиктограммы на рабочем столе представляют собой средства "быстрого вызова" (shortcuts) - прикладные программы с полными окнами, которые могут ввести в заблуждение пользователей, переходящих из Windows 3.x (о них см. ниже).
Пользователи могут "перетащить" линейку задач, одновременно расширив ее до более чем одной строки, либо оставить вверху или сбоку экрана. Есть даже функция автоматического скрывания Auto hide, предоставляемая в качестве выбора в перечне свойств линейки задач Taskbar Properties Sheet, которая сжимает линейку задач до толщины тонкой линии, расширяющейся до нормальных размеров, когда ее касается курсор мыши. Можно предположить, однако, что большинство пользователей будет придерживаться ее представления по умолчанию. В дополнение к встроенной системной линейке задач прикладная программа может открывать собственные линейки доступа (access bars) с использованием пользовательского интерфейса API SHAppBarMessage. Каждая такая линейка может быть автоматически спрятана или помещена вдоль любого края экрана по желанию пользователя.
Кнопка меню запуска Start Menu расположена на левом крае линейки задач. В разделе рекомендаций по открытию папок Setup Folder Guidelines вы можете посмотреть, как добавить к этому меню свою программу. Крайняя справа на линейке задач - область подсказок/извещений Notification Area. По умолчанию (на машинах со звуковым драйвером) в этой области находятся два объекта: пиктограмма динамика и индикатор текущего времени. Кроме времени от расположенных в области подсказок объектов можно четырьмя способами получить дополнительную информацию:
Область подсказок динамична. Для добавления к этой области ваших пиктограмм и текстовых объектов или удаления их оттуда вы можете воспользоваться вызовами Shell_NotifyIcon API (документированными сейчас в заготовочном файле SHELLAPI.H, входящем в состав комплекта SDK). Эти объекты сами могут содержать информацию ToolTips, контекстные меню и все другие средства, которыми обладают объекты по умолчанию. Когда, например, подключается сеть Microsoft Network, она добавляет в область подсказок пиктограмму модема. Область подсказок является идеальным местом дл сигнализации вашим пользователям о том, что прикладна программа требует к себе внимания. Например, если прикладная программа выходит в сеть для сбора большого количества данных, вы можете поместить в область подсказок пиктограмму, которая скажет, когда программа закончит работу. Это предпочтительней мерцающей пиктограммы, поскольку действует менее навязчиво. Позаботьтесь, однако, удалить пиктограмму подсказки после того, как пользователь возобновит взаимодействие с вашей прикладной программой. Очень похоже, что эта область станет дефицитным ресурсом для многих пользователей, после того как программисты поймут ее удобство.
Каталоги в Windows 95 называются папками. Роль файлов шире традиционной, состоявшей в том, чтобы хранить данные или быть исполнимыми. В системе имеютс папки, которые служат гораздо более широким целям, чем просто организация данных. Например, за пиктограммами, появляющимися, на рабочем столе, в действительности скрываются файлы папки, называемой Windows\Desktop. (Предполагается, что основной папке Windows 95 вы можете дать любое имя, но имена вложенных папок фиксированы.) Если вы переименовываете пиктограмму рабочего стола, то одновременно переименовываете файл в Windows\Desktop.
Поскольку может оказаться необходимым дать фиксированное имя вашим исполнимым файлам или потребуется создать несколько других файлов в их собственных каталогах, вам понадобится способ размещения запускающей пиктограммы на рабочем столе без использования настоящего исполнимого файла. В связи с этим наилучшим решением представляется возможность использования всеми элементами рабочего стола особого файла Windows 95, названного файлом быстрого вызова (shortcut). При этом перенос вами пиктограммы из окна Win 95 Explorer на рабочий стол означает по умолчанию не просто перемещение исполнимого файла, но и создание файла быстрого вызова.
Этот файл нового типа может быть использован дл выполнения программы или какого-то другого действия. Наиболее очевидное его применение состоит в исполнении функции вызова с рабочего стола по пиктограмме. В Windows 95 эти файлы представляют собой также эквиваленты элементов групп диспетчера программ Program Manager.
Как было упомянуто, действие по умолчанию при переносе исполнимого файла или привязанного к нему документа на рабочий стол состоит в создании файла быстрого вызова. Однако создание файла быстрого вызова не является действием по умолчанию, если вы переносите файл из одной папки окон Explorer в другую. То есть, если вы переносите что-то правой клавишей мыши из окна в окно Explorer, файл быстрого запуска выбираетс посредством одной из функций во всплывающем меню. Вы можете также создавать файлы быстрого вызова из меню File|New в Explorer.
Технически файлы быстрого вызова - это специальные двоичные файлы с расширением LNK. Обычная их длина составляет около 300 байт, но, конечно, они занимают на несжатом диске не менее того, что занимает любой другой файл, например 16 Кбайт в разделе размером от 512 Мбайт до 1 Гбайт. Файл быстрого вызова содержит указатель пиктограммы и информацию о свойствах. Запуск двойным щелчком на нем в списке файлов или на его пиктограмме на рабочем столе вызывает исполнение команды, присутствующей в целевой командной строке. Обычно эта командная строка соответствует файлу на диске, но может соответствовать и другим доступным объектам, например принтерам или даже дистанционно вызываемым компьютерам.
Каталог Windows, ой, извините папка (видите, к термину нужно еще привыкнуть!), содержит папку под именем Start Menu (стартовое меню). Все верно - два слова, как это разрешается в Windows 95, допускающей длинные имена файлов. Шесть нижних элементов стартового меню постоянные, три верхних представляют собой имена файлов и папок в папке \Windows\Start Menu этой машины.
Если вы выбираете элемент стартового меню, который соответствует файлу, Windows пытается запустить этот файл. Если это исполнимый файл или документ, которому поставлен в соответствие исполнимый файл, Windows запустит его, как если бы вы два раза щелкнули на нем в окне Explorer. Удобнее всего хранить файлы быстрого вызова во вложенных папках стартового меню. Когда пользователь выбирает элемент, соответствующий файлу быстрого вызова, Windows "вызывает" этот файл, запускающий, в свою очередь, соответствующее действие.
Вложенные папки стартового меню представляют собой подменю. Эти подменю, в свою очередь, могут содержать файлы, которые появляются в качестве элементов, и вложенные папки, имеющие вид подменю. Windows создает в Windows\Start Menu одну папку, названную Windows\Start Menu\Programs. Если пользователь инсталлирует прикладную программу Win 3.1 в среде Windows 95 и эта программа пользуется вызовами DDE для инсталляции группы в диспетчере программ Program Manager, то Windows 95 создает вместо группы новую вложенную папку в Windows\Start Menu\Programs. Это означает, что элементы диспетчера программ становятся как бы файлами быстрого вызова в этой новой папке.
Еще одну важную папку под названием Program Files (программные файлы) Windows 95 Setup помещает вне корневого каталога накопителя, на котором инсталлирована Windows 95. Она образует вложенную папку, названную Accessories (принадлежности) и вносит в нее такие файлы, как WordPad и Paint. Здесь же рекомендуется размещать по умолчанию прикладные программы.
Так же как файл COMMDLG.DLL был важным компонентом, придававшим прикладным программам Windows 3.1 знакомый облик, так новый модуль DLL "Common Controls" (COMCTRL32.DLL) - общие средства управления - будет важен при разработке прикладных программ Windows 95. Этот DLL включает следующие средства:
База данных регистрации в Windows 3.1 заменена реестром (registry), который хранится в двух файлах: USER.DAT и SYSTEM.DAT. Древовидной структурой реестр очень похож на дерево каталога. Каждый узел может иметь как подузел, так и элементы, которые имеют вид "ключ-значение" (key-value).
Структура дерева в Windows 95 может быть довольно сложной. Имена шрифтов, например хранившиеся ранее в файле WIN.INI, теперь перешли в узел HKEY_LOCAL_MACHINE\Software\Microsoft\Windows \CurrentVersion\Fonts. Имя шрифта служит ключом, а им файла - значением.
Руководство по программированию в Windows 95, распространяемое сейчас в виде справочного файла (GUIDE.HLP) в комплекте Windows 95SDK, содержит главу под названием Application Setup Guidelines (указания по настройке и запуску прикладных программ). Первое, с чем столкнется пользователь вашей программы, - это ее настройка, и принятые вами решения по ее процедуре могут навсегда сформировать отношение пользователя к программе. Вы должны поэтому с должным вниманием отнестись к удобству настройки и соответственно удаления, или деинсталляции (Uninstall) программы, как к важным характеристикам вашего пользовательского интерфейса в целом.
Руководящие материалы содержат несколько строгих указаний, касающихся структуры папок, которую вы делаете основой вашей прикладной программы, в том числе такие:
Если вы пользуетесь разделяемыми модулями DLL, всегда проверяйте, имеются ли эти DLL на диске. Если да, то заменяйте их только при условии, что ваша верси новей. Если DLL уже есть, не забудьте увеличить на единицу содержимое его счетчика, который можно найти в разделе в HKEY_LOCAL_MACHINE\Software\Microsoft\ Windows\CurrentVersion\SharedDLLs реестра. Значение ключа в разделе разделяемых компонентов равно числу прикладных программ, которые объявили о своем намерении пользоваться этим компонентом. Если вы обнаружили, что уже есть ключ со значением, например 3, то должны заменить его на 4. Если ключа нет, нужно образовать этот элемент реестра и присвоить ему значение 1.
Если вы припомните структуру большинства прикладных программ, то станет ясно, что самым трудным может оказаться выполнение рекомендации о размещении в Start Menu единственной пиктограммы. Изучение практичности, предпринятое фирмой Microsoft выявило, что многочисленные пиктограммы запутывают неопытных пользователей. У опытных пользователей, вероятно, будет много программ, и раздражение у них вызовет изобилие развертывающихся одно за другим меню. (Такие пользователи могут при желании упорядочить существующие пиктограммы, а это, к счастью, легко сделать. Поскольку Start Menu отображает ветвь дерева папки, основанием которого оно служит, реорганизация Start Menu так же проста, как "перетаскивание" файлов быстрого выпуска в пределах Explorer.)
Руководства настоятельно рекомендуют включать учебные пособия и readme-файлы в состав меню вашей основной прикладной программы, не ставя им в соответствие отдельных пиктограмм. Сборники утилит, с другой стороны, будут по-прежнему нуждаться в отдельных подменю.
От пользователей все чаще поступают протесты против ограничения 127 символами длины строки маршрута (path) в DOS. Хотя в целях совместимости Windows 95 может пользоваться маршрутом DOS, предполагается, что программы для Windows 95 будут использовать сопряженные с программами маршруты, хранящиеся в реестре.
Маршруты обычно служат двум целям: они дают пользователю возможность запускать прикладную программу из любого места и - программе отыскивать DLL- и другие системные файлы. Эти возможности реализуются теперь с помощью двух отдельных ключей, которые размещены в новой ветви реестра. Пусть, например, ваша программа FOOBAR.EXE находится в папке \Program Files\Foo Folder, и вы хотите, чтобы ее система вложенных папок тоже находилась в маршруте прикладной программы. Сначала вы добавляете узел под названием D:\Foo Data, затем узел HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\ CurrentVersion\AppPaths\foobar.exe. Этот узел должен иметь два ключа. Имя одного Default (умолчание) и значение C:\Program Files\Foo Folder. Имя другого ключа Path (маршрут), и вы должны присвоить ему значение C:\Program Files\Foo Folder\System;D:\Foo Data; (заметьте, что строка маршрута должна кончаться точкой с запятой).
Остается несколько вопросов, касающихся инсталляции. Предполагается, что вы дадите способ удаления вашей прикладной программы и зарегистрируете его в реестре. Вы дополните подузел в HKEY_LOCAL_MACHINE\Software\ Microsoft\Windows\CurrentVersion\Uninstall именем своей программы и определите два ключа: имя вашей прикладной программы, которое будет видеть пользователь, и командную строку, которая будет исполняться, если пользователь запустит вашу программу из прикладного модуля Add/Remove Program управляющей панели Control Panel.
В комплект SDK входит настраиваемая версия программы Install Shield фирмы Sterling Software, котора предоставляет программистам технологию инсталляции. Install Shield пользуется богатым языком сценариев, но есть также шаблон, который позволяет проводить инсталляцию без углубления в этот языка.
Windows 95 содержит широкий набор инструментальных средств для отработки вашего пользовательского интерфейса - столь широкий, что часто кажетс избыточным. В двух частях этой статьи я познакомил вас с некоторыми из тех, к которым вам потребуетс обратиться, когда вы будете продвигать свои прикладные программы в новый мир. По мере вашего погружения в детали каждая из них потребует глубокого рассмотрения. На данный момент лучший источник информации дл дальнейшего изучения - это CD-ROM с комплектом Windows 95 SDK. Обратите особое внимание на папки ADMIN\RESKIT\DOCS (набор ресурсов), \WIN32DK\MSTOOLS\HELP (руководство программиста в формате справки) и \WIN32SDK\DOC\UISTYLE (руководство по стилям).