Строка состояния текстового редактора Microsoft Word. Строка состояния Что находится в строке состояния

5.5. ПАНЕЛЬ ИНСТРУМЕНТОВ И СТРОКА СОСТОЯНИЯ

Панель инструментов (Toolbar ) и строка состояния ( Status Bar ) - это специаль­ные компоненты пользовательского интерфейса, предназначенные для создания функционально-ориентированных наборов элементов управления. Панель инстру­ ментов содержит, как правило, элементы управления, обеспечивающие быстрый доступ к наиболее часто используемым командам или свойствам объектов. Разли­ чают несколько типов панелей инструментов, ориентированных на применение в специфических приложениях. Такие специализированные панели иногда имеют собственные названия (рис. 5.31).

Рис. 5.31. Примеры панелей инструментов

Строка состояния - это специальная область внутри первичного окна (обычно в нижней его части), предназначенная для вывода информации о текущем состоя­нии объектов или процессов, представленных в окне, а также любой другой контек­ стной информации, например, о состоянии клавиатуры (рис. 5.32). Вы можете так­ же использовать строку состояния, чтобы обеспечить вывод справочных сообщений о выбранном пункте меню или кнопке панели инструментов. Подобно панели инст­ рументов, строка состояния может содержать элементы управления; тем не менее, рекомендуется включать в нее информацию «только для чтения» или не интерак­тивные элементы.

Доступ к элементам управления, включенным в панель инструментов или стро­ ку состояния, реализуется либо с помощью мыши, либо через другие стандартные средства взаимодействия с этими элементами. Может быть также реализовано кла­виатурное взаимодействие, основанное на использовании горячих клавиш или кла­ виш доступа. Если элемент панели инструментов или строки состояния не имеет текстовой метки, средства клавиатурного доступа для него оказываются неэффек­тивными. Кроме того, если какая-либо клавиша доступа уже используется в пер­ вичном окне, она не может применяться для работы с панелью инструментов. На­пример, если полоса меню первичного окна уже использует некоторую клавишу доступа, то все события, связанные с этой клавишей, будут обрабатываться приме­ нительно к полосе меню.

Рис. 5.32. Варианты реализации строки состояния

Когда пользователь взаимодействует с элементом управления, расположенном на панели инструментов или в строке состояния, любое изменение непосредствен­но относится к текущему выбору (например, если кнопка панели инструментов пред­ назначена для изменения начертания шрифта в тексте, то при нажатии этой кнопки текст немедленно изменяется); никакое дополнительное подтверждение не требу­ется. Единственное исключение составляет случай, когда использование элемента управления (например, кнопки), требует от пользователя ввода дополнительной информации; соответствующая операция не может быть реализована, пока пользо­ ватель не введет требуемую информацию. Примером такого исключения является выбор объекта или установка значения параметра с помощью диалоговой панели.

Для тех элементов панели инструментов или строки состояния, которые не име­ ют текстовой метки, обязательно должна использоваться всплывающая подсказка. Система поддерживает создание всплывающей подсказки для элементов стандарт­ной панели инструментов.

С целью обеспечения максимальной гибкости в работе пользователей панели инструментов и строки состояния должны допускать индивидуальную настройку. Простейший вариант такой настройки - возможность скрыть (не отображать) эти элементы интерфейса. В более сложных приложениях пользователю предоставля­ется право изменять или перестраивать элементы, включенные в панели инстру­ментов или строки состояния.

Рекомендуется также обеспечивать возможность отображения каждой кнопки на панели инструментов по крайней мере двух размеров: 24 на 22 и 32 на 30 пиксе­ лов. Если для обозначения кнопок используются графические метки, они должны иметь размеры не более чем 16 на 16 и 24 на 24 пикселов соответственно.

Продумайте также возможность создания перемещаемой пользователем панели инструментов. Хотя панель инструментов по умолчанию отображается как при стыкованная к определенному краю окна или панели, в которых она используется, разрешите пользователю перемещать ее к другому краю или отображать в виде окна палитры (рис. 5.33).

Рис. 5.33. Перемещаемая панель инструментов

Для перемещения панели инструментов необходимо установить указатель на любом свободном участке панели и, нажав ЛКМ, перетащить ее на новое место. Если новая позиция находится в пределах горячей зоны края окна, при­ ложение должно автоматически пристыковать панель к краю окна (после того, как пользователь отпустит кнопку мыши). Если же новая позиция находится вне горячей зоны края окна, панель инструментов преобразуется в окно палит­ры. Чтобы вновь пристыковать панель к краю окна, пользователь должен уста­ новить указатель на полосе заголовка окна палитры и, нажав ЛКМ, перемещать это окно, пока указатель не окажется в горячей зоне; когда пользователь отпу­стит кнопку мыши, панель инструментов отображается в пристыкованном со­ стоянии.

Во время перемещения панели инструментов обеспечьте визуальную обрат­ ную связь, отобразив, например, перемещение контура панели инструментов. Когда указатель входит в горячую зону окна, измените соответствующим обра­зом контур панели инструментов, чтобы пользователь мог визуально контроли­ ровать операцию (рис. 5.34).

Рис. 5.34. Визуализация перемещения панели инструментов

Вы можете также поддержать для панели инструментов настройку пользовате­лем других параметров, таких например, как изменение размеров панели инстру­ ментов, стыковку нескольких панелей, размещение их в требуемом порядке и т.п.

Не рекомендуется включать в состав панели инструментов и строки состояния элементы, к которым пользователь не может получить доступ другим путем. Кроме того, всегда сохраняйте текущую позицию, размер и другую информация о панели инструментов и строке состояния, с тем чтобы они могли быть восстановлены в прежнем виде, когда пользователь вновь открывает окно приложения.

Для строки состояния поддерживается также возможность включения в нее регулятора для калибровки размера окна, описанного в главе 4. При реализации этой возможности следует иметь в виду следующее.

Нельзя одновременно отображать регулятор в двух позициях: в строке состоя­ ния и на пересечении полос прокрутки окна (в его стандартной позиции). Когда на экране отображается строка состояния, содержащая регулятор, то из стандартной позиции он должен быть убран; если же пользователь убирает строку состояния, восстановите регулятор на стандартной позиции.

СТАНДАРТНЫЕ КНОПКИ ПАНЕЛИ ИНСТРУМЕНТОВ

Табл. 5.6 иллюстрирует стандартные форматы кнопок «общего назначения» ко­торые могут быть использованы в любом приложении.

Таблица 5.7.

Форматы стандартных кнопок панели инструментов

Формат 16х16

Формат 24х24

Функция

Создать (New )

Открыть (Open)

Печать (Print)

Предварительный просмотр ( Print Preview )

Отменить (Undo)

Повторить (Redo)

Вырезать (Cut)

Вставить (Paste)

Копировать (Copy)

Удалить (Delete)

Найти (Find)

Заменить (Replace)

Полужирный [курсив] ( Bold )

Курсив (Italic)

Подчёркнутый [ шрифт ] (Underline)

Свойства (Properties)

Что Это? [режим контекстно-зависимой подсказки] ( What ’ s This )

Открыть родительскую папку ( Open parent folder )

Отобразить как крупные пиктограммы ( View as large icons )

Отобразить как мелкие пиктограммы ( View as small icons )

Отобразить в виде списка ( View as list )

Отобразить в виде таблицы ( View as details )

Выделить (выбрать) область ( Region selection tool )

Применяйте приведенные выше изображения только для обозначения описан­ ных функций. Последовательность в их использовании позволяет пользователю применять знания и навыки, полученные при работе с одним программным продук­ том, в любом другом. Если же одна из стандартных пиктограмм используется для обозначения другой функции, это может сбить пользователя. Разрабатывая собственные кнопки для панели инструментов, следуйте стандартным системным соглашениям, рассмотренным ранее.

Или Windows Phone есть множество способов контроля и регулировки работы устройства. Один из самых простых из них - через раздел «настройки». В этом приложении пользователь может следить за состоянием устройства и получать подробную информацию обо всех процессах, происходящих в смартфоне. Но есть способ контроля куда более простой. Многие прекрасно знают, о чём пойдёт речь. Но вряд ли придавали этой опции большое значение. Итак, самый простой способ контроля за телефоном - строка состояния "Андроид".

Как выглядит?

Строку состояния несложно найти: она всегда находится в самом верху дисплея и видна даже почти при любых открытых приложениях (кроме, конечно же, видео). К слову, зачастую она окрашивается в общий цвет приложения, которое открыто: браузер или YouTube, например.

Причём многие производители любят устанавливать в свои смартфоны различные надстройки: так называемые «оболочки». И эти самые оболочки могут менять дизайн строки состояния

Что содержится?

В строке состояния каждый пользователь может найти индикатор заряда батареи устройства, активную SIM-карту, а также звуковой режим, который включен в данный момент.

Плюс ко всему, строка состояния отображает текущее время, а иногда и дату.

Кроме того, многие приложения добавляют собственные решения и опции, позволяющие отслеживать их работу, значки и символы которых так же выносятся на строку состояния "Андроид".

Например, приложение социальной сети Instagram, если включить соответствующие настройки, выносит в строку состояния уведомления о новых подписчиках, лайках на фото или сообщениях в Direct. Благодаря этому пользователи всегда знают, что нового происходит в их аккаунте.

А приложение видеохостинга YouTube выносит в раздел "Строка состояния Android" уведомления о новых опубликованных видео.

Благодаря ей пользователи приложения "ВКонтакте" всегда знают, какая музыка играет в их плей-листе, и кто пишет им комментарии под записями и личные сообщения.

Естественно, большинство приложений предоставляет возможность всем пользователям настраивать, какие именно уведомления будут выноситься в раздел "Строка состояния".

К чему даёт доступ?

Из графы "Строка состояния" можно «вытянуть» шторку уведомлений, в которой располагается множество различных функций, начиная от включения и выключения звуковых режимов, заканчивая активацией режима полёта.

Многие производители имеют тенденцию к установке собственных надстроек на начальную версию Android. Ещё эти надстройки называют оболочками.

Например, продолжительный период времени Samsung использовала оболочку TouchWiz, которую буквально ненавидели многие пользователи за наличие огромного количества неисправностей и высокого потребления оперативной памяти устройства. Теперь же компания перешла на интерфейс Samsung UX.

Так вот, эти оболочки часто изменяют шторку уведомлений до неузнаваемости. Причем не только с точки зрения дизайна, но и с точки зрения функционала. К примеру, разработчики той же Samsung очень любят выносить множество небольших, но важных функций из раздела «Настройки» в бар-панель шторки. Более того, из ее уведомлений можно выйти в сам раздел настроек устройства. К слову, многие считают это довольно удобным.

Какие бывают проблемы с ней?

Зачастую случается так, что строка состояния просто пропадает с экрана без каких бы то ни было причин. И многие пользователи начинают паниковать. Но не стоит отчаиваться.

Во-первых, нужно немного подождать. Как бы это комично и банально ни звучало, но это действительно так. Иногда проблема решается сама собой.

Во-вторых, помогает перезагрузка устройства, которая с большей вероятностью вернёт строку состояния на прежнее место.

В-третьих, возможно, что проблема кроется в сторонних надстройках, которые установлены самим пользователем. Так называемые «лаунчеры» имеют особенность изредка скрывать раздел "Строка состояния" c дисплея. Поэтому будьте внимательны с устанавливаемым софтом.

Вообще, как видно из вышенаписанного, основная причина, по которой чаще всего пропадает строка состояния, - несовершенство программного обеспечения, установленного на устройстве. Вполне вероятно, что либо удаление, либо обновление этого самого софта поможет решить проблему пропажи строки состояния.

Итог

В итоге получается, что строка состояния Android - действительно полезный инструмент, который помогает пользователям не только отслеживать заряд батареи и скорость Интернет-соединения, но и следить за многими процессами, которые происходят в самом устройстве и в различных приложениях, которые на нём установлены.

А отсутствие этого инструмента заметно усложняет жизнь владельцам гаджетов по той причине, что в строке состояния содержится масса полезной информации, которая всегда находится под рукой, что, несомненно, очень удобно.

И многие производители, понимая значимость строки состояния в Android OS, стараются дополнить её различными функциями и преобразовать так, чтобы им было ещё удобнее считывать с неё различные данные.

Строка состояния содержит информацию о положении текстового курсора в документе и о режиме работы редактора. Она всегда располагается в нижней строке окна Word и разделена на три зоны.

Слева находится зона, указывающая положение курсора относительно документа. В ней:

Следующая зона выдает положение курсора на текущей странице:

Первые два параметра появляются в режиме просмотра разметки страницы , третий при наборе видимого текста .
Последняя зона – режимы редактирования. Здесь:

Включение / выключение каждого режима может быть осуществлено двойным щелчком левой кнопки мыши в области этого режима.

Наличие строки состояния управляется диалогом Параметры , который вызывается из меню С ервис командой П араметры... . Закладка Вид этого диалога содержит раздел "Окно" с параметром "строка состояния".

34.Текстовый процессор Microsoft Word – структура окна, основные панели инструментов. Почему Microsoft Word процессор, а не редактор?

Текстовый процессор Microsoft Word 2003 является одним из основных компонентов Microsoft Office 2003. Текстовый процессор позволяет создавать, редактировать, сохранять, просматривать и распечатывать текстовые документы, применять форматирование символов, абзацев, страниц, разделов и документа в целом, назначать существующие стили символов, абзацев, таблиц и создавать собственные стили. Кроме того, в Word можно создавать таблицы, рисунки, диаграммы, формулы и т.д.

В окнах приложений Microsoft Office 2003 используются стандартные элементы управления или компоненты графического интерфейса, которые объединяются в более крупные конструкции (меню, панели инструментов, окна диалога) и которые предоставляют возможность управлять окном приложения, а также изменять содержимое и форму представления информации, отображаемой в окне документа.

В Microsoft Office 2003 используются окна четырех типов: окна приложения; окна документов; диалоговые окна; формы. Окно документа отображается в окне приложения.

Управление приложениями Microsoft Office 2003 осуществляется с помощью меню и панелей инструментов. В приложениях Microsoft Office 2003 применяются три типа меню: строка меню (главное меню приложения или ниспадающее меню); контекстное (всплывающее) меню; оконное (системное) меню для изменения размеров и положения окна приложения.

Панель инструментов - это строка, на которой располагаются (наиболее часто используемые команды) кнопки или пиктограммы и раскрывающиеся списки. Панель инструментов обеспечивает быстрый доступ к командам.

35.Типы операционных систем. Операционная система WINDOWS – основные особенности.

Типы операционных систем по способу обработки данных:

· ОС пакетной обработки (batch) - для выполнения конкретных задач имеются соответствующая программы, выполняющиеся последовательно. Пользователь не имеет возможности вмешиваться в ход выполнения, другими словами интерактивность в таких ОС отсутствует. Новые задания добавляются в очередь и исполняются последовательно.

· ОС с разделением времени (time-sharing) - ОС делит процессорное время на промежутки, которые выделяются прикладным программам по предустановленным правилам. ОС с разделением времени позволяют запускать несколько приложений одновременно (mutlitasking) и одновременно работать нескольким пользователям на одном компьютере. ОС с разделением времени интерактивны. Современные ОС построены с применением технологии разделения времени.

· ОС реального времени (real-time) - предназначены для критически важных приложений, в которых важна точность времени реагирования. К таким приложения относятся системы медицинского слежения, антиблокировочные системы в автомобилях, системы управления атомными электростанциями итд.

Графические (с наличием графического пользовательского интерфейса - GUI) - текстовые (только командная строка);
бесплатные - платные;

Открытые (с возможностью редактировать исходный код) - закрытые (без возможности редактировать исходный код) ;

Клиентские - серверные;

Высокая стабильность (устойчивость к сбоям аппаратной части) - низкая стабильность;

Простая в администрировании (для рядового пользователя) - сложная, для системных администраторов;

16-разрядная - 32-разрядная - 64-разрядная (в далеком прошлом были еще и 8-разрядные) ;

С высоким уровнем безопасности данных - с низким уровнем безопасности;

Понятие операционной системы

Существуют две группы определений ОС: «совокупность программ, управляющих оборудованием» и «совокупность программ, управляющих другими программами» . Обе они имеют свой точный технический смысл, который, однако, становится ясен только при более детальном рассмотрении вопроса о том, зачем вообще нужны операционные системы.

Windows выполняет следующие основные функции:

· Удобный, наглядный графический интерфейс пользователя.

· Многозадачная работа, т.е. выполнение одновременно нескольких программ.

· Унификация использования аппаратных ресурсов компьютера.

Особенности Windows:

· Правила написания программы . Для работы в среде Windows программа должна быть написана по определенным правилам, существенно отличающимся от принятых в MS-DOS.

Windows позволяет запускать и программы, написанные для MS DOS, но при этом программы не могут использовать преимущества Windows.

· Графический интерфейс пользователя в Windows основан на идее оконного интерфейса, принятого так же и в ряде других современных ОС (например, UNIX). Каждая программа имеет собственное окно, в котором и происходит обмен сообщений с пользователем. Для наглядности в Windows широко применяются иконки (пиктограммы), изображающие отдельные программы.

Кроме того, интерфейс Windows в значительной степени стандартизирован, что облегчает пользователям процесс освоения новых порограмм.

· Многозадачость . Многозадачный режим работы позволяет запускать одновременно несколько приложений, например, текстовый процессор, базу данных, игру и переключаться между ними.

· Обмен данными между приложениями . Кроме того возможен обмен данными между приложениями, что позволяет, например, информацию созданную в электронной таблице, перенести в текстовый документ через буфер обмена.

LPTBNOTIFY ptbn =(LPTBNOTIFY) lParam; switch(ptbn->iItem)

lstrcpy(ptbn->pszText, "Help"); ptbn->tbButton.iBitmap = STD_HELP; ptbn->tbButton.idCommand = 11; ptbn->tbButton.fsState = TBSTATE_ENABLED; ptbn->tbButton.fsStyle = TBSTYLE_BUTTON; ptbn->tbButton.dwData = 0; ptbn->tbButton.iString = 10;

return 1; case 1:

lstrcpy(ptbn->pszText, "Delete"); ptbn->tbButton.iBitmap = STD_DELETE; ptbn->tbButton.idCommand = 12; ptbn->tbButton.fsState = TBSTATE_ENABLED; ptbn->tbButton.fsStyle = TBSTYLE_BUTTON; ptbn->tbButton.dwData = 0; ptbn->tbButton.iString = 11;

return 1; default:

Если у вас уже есть массив описаний TBBUTTON, то самый быстрый путь ответа на это сообщение состоит в использовании функции memcpy для копирования TBBUTTON для каждого получаемого сообщения. Ниже показано, как программа GADGETS делает это:

lstrcpy(ptbn->pszText, GetString(ptbn->iItem)); memcpy(&ptbn->tbButton, &tbb, sizeof(TBBUTTON));

Строка состояния

Строки состояния (status bar) - окна только для вывода информации, часто располагающиеся в нижней части главного окна программы. Наиболее частое использование строки состояния состоит в том, что она используется для отображения подробного описания пунктов меню при их просмотре пользователем, также как официант комментирует тот или иной пункт меню в ресторане. Когда меню не просматривается, программы часто отображают в строке состояния сопутствующую информацию. Также часто отображается состояние клавиш сдвига

- , , . В программах текстовых процессоров часто отображается также текущая страница, строка, столбец.

Строка состояния может работать в двух режимах, поэтому она может использоваться для описания элементов меню и вывода другой программной информации. В режиме описания пунктов меню (простом режиме, "simple mode") строка состояния расширяется для отображения простой строки текста. В режиме отображения состояния программы в строке состояния отображается одно или более окон, каждое из которых называется "частью" строки статуса. Конкретная часть строки состояния может быть создана как ниша с рамкой, которая выглядит приподнятой над поверхностью окна строки состояния, или без рамки. Кроме того, существует возможность добавить в строку состояния дочерние окна, такие как часы или индикатор прогресса. При переключении строки состояния из простого режима в режим отображения состояния программы и обратно строка состояния сохраняет один набор скрытых окон в то время, как отображается другой набор видимых окон.

Создание строки состояния

Простейший путь создания строки состояния состоит в вызове функции CreateStatusWindow :

hwndStatusBar = CreateStatusWindow(

WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | CCS_BOTTOM, "Ready", hwndParent, 2

Эта функция вызывает функцию CreateWindow , которая создает дочернее окно с родительским окном hwndParent , с текстом окна "Ready" (этот текст отображается в первом окне строки состояния), идентификатором, равным 2. Флаги стиля окна заданы в первом параметре.

В приведенной ниже таблице дано описание всех флагов стилей, которые могут использоваться для создания удобной строки состояния. Вероятно, вам чаще всего придется задействовать флаг SBARS_SIZEGRIP, поскольку он задает вывод диагональной штриховки в правом углу строки состояния. Остальные флаги стиля модифицируют начальное состояние и местоположение строки состояния так, чтобы она могла находиться в другом месте, а не в нижней части рабочей области родительского окна, что определяется флагом CCS_BOTTOM.

Флаг стиля

Описание

Представление

Отображает диагональную штриховку в

правом углу строки состояния. Эта область

служит для изменения размеров родительского

Начальное положение

Помещает строку состояния в верхнюю часть

родительского окна.

Помещает строку состояния в нижнюю часть

родительского окна (по умолчанию).

Запрещает перемещение относительно оси y .

Запрет автоматического

CCS_NOPARENTALIGN

Строка состояния устанавливает свою высоту

изменения размеров и

(cy ). Но не устанавливает свое местоположение

местоположения

(x,y ) и ширину (cx ). Для соответствующей

обработки необходимо после создания

посылать сообщение об изменении размеров.

Запрещает все автоматические перемещения и

изменения размеров. Это запрещает

следующие флаги стиля: CCS_TOP,

CCS_BOTTOM, CCS_NOMOVEY и

CCS_NOPARENTALIGN. Вы должны явно

задать размеры и положение строки состояния.

Перемещение и изменение размеров строки состояния

Когда родительское окно строки состояния изменяет размер (при получении сообщения WM_SIZE), строка состояния должна занять новое положение и приобрести другие размеры, чтобы остаться в нижней части рабочей области родительского окна. Панель инструментов изменяет размеры в ответ на сообщение TB_AUTOSIZE (см. ранее в этой главе). У строки статуса нет аналогичного сообщения. Вместо него используется примерно следующие:

int cxParent = LOWORD(lParam); int cyParent = HIWORD(lParam); int x, y, cx, cy;

// Оставить высоту окна строки состояний без изменений

GetWindowRect(hwndStatusBar, &rWindow); cy = rWindow.bottom - rWindow.top;

y = cyParent - cy; cx = cxParent;

MoveWindow(hwndStatusBar, x, y, cx, cy, TRUE);

Этот код сохраняет высоту строки состояния без изменений и модифицирует ее ширину и местоположение таким образом, чтобы занять нужное место в рабочей области родительского окна.

Поддержка просмотра меню

Пользователи ожидают от Windows - программ отображения вспомогательной информации в строке состояния о том, какую функцию выполняет тот или иной пункт меню. Даже случайный пользователь Windows быстро учится тому, что под пунктом меню из одного слова скрывается значительно более широкое действие. И хотя опытные пользователи легко понимают смысл стандартных команд меню, иногда им приходится тратить много сил, чтобы понять смысл специфичных пунктов меню конкретной программы.

Меню окна посылает сообщение WM_MENUSELECT, когда пользователь просматривает пункты меню, и сообщение WM_COMMAND, когда пользователь выбирает пункт меню (см. главу 10). Для поддержки отображения вспомогательной информации о пунктах меню следует обрабатывать сообщение

Для упрощения процесса обработки этого сообщения и отображения текста в строке состояния библиотекой элементов управления общего пользования поддерживается функция MenuHelp . Эта функция предполагает наличие таблицы строк, содержащей тексты вспомогательной информации для отображения, и структуры данных, связывающей пункты меню с идентификаторами текстовых строк из таблицы. Функция MenuHelp определена следующим образом:

Первый параметр, uMsg , должен быть равен WM_MENUSELECT, хотя наличие этого параметра (и его описание в документации по Win32) говорит о том, что обработка сообщения WM_COMMAND была заложена еще при разработке функции. В качестве второго и третьего параметров передаются параметры wParam и lParam оконной процедуры. Эти три параметра, взятые вместе, описывают то, какую часть системы меню просматривает пользователь, и является ли он пунктом, всплывающего меню или системного.

Шестой параметр, hwndStatus , это описатель окна строки состояния. Функция MenuHelp посылает специфичное для строки состояния сообщение SB_SIMPLE для установки строки состояния в режим одного окна (простой) и для отображения соответствующего текста. Позднее, когда пользователь прекращает просмотр, функция MenuHelp посылает другое сообщение SB_SIMPLE для возврата строки состояния в режим многих окон (непростой).

Функция MenuHelp использует другие три параметра - hMainMenu , hInst и lpwIDs - для определения того, какую строку необходимо отобразить при просмотре элемента меню. Параметр hInst идентифицирует модуль, который может быть описателем экземпляра DLL или описателем экземпляра выполняемой программы, и является владельцем таблицы, содержащей строки меню (которые, как можно предположить, загружаются с помощью функции LoadString ).

Возможность сделать так, чтобы функция MenuHelp работала правильно, состоит в том, чтобы передать правильное значение в четвертом и седьмом параметрах: hMainMenu и lpwIDs . Правильная установка этих значений является небольшим трюкачеством, поскольку существует три элемента для рассмотрения: командное меню, всплывающее меню и системное меню. Другая сложность состоит в том, что документация по Win32 говорит о том, что lpwIDs - массив, в котором осуществляет поиск функция MenuHelp . Несмотря на то, что имеет смысл использовать массив для хранения базовых значений строковых ресурсов, вы должны будете сами делать грамматический разбор массива, поскольку функция MenuHelp не делает этого.

Просмотр элементов меню

Функция MenuHelp вычисляет идентификатор ID строкового ресурса для элемента меню путем добавления значения идентификатора команды (полученного из младшего слова wParam ) к значению, на которое ссылается lpwIDs . Например, следующий вызов функции MenuHelp отображает строковый ресурс с номером 125 в строке состояния:

UINT uiStringBase = 100; WPARAM wParam = 25;

MenuHelp(WM_MENUSELECT, wParam, lParam, NULL, hInst, hwndStatus, &uiStringBase);

Как показано в примере, описатель меню hMainMenu может быть равен NULL для отображения элементов меню команд, поскольку функция MenuHelp не использует это значение для расчета.

Простейший путь привести в соответствие элементы меню команд и строковые ресурсы состоит в том, чтобы присвоить им одинаковые значения. Это позволит установить базу строки в ноль и ее игнорировать.

Просмотр элементов всплывающего меню

В случае всплывающего меню функция MenuHelp вычисляет строку-ресурс для отображения в строке состояния путем добавления индекса (с нулевой базой) всплывающего меню к значению, на которое ссылается lpwIDs . Для того чтобы это работало правильно, необходимо, чтобы четвертый параметр функции MenuHelp - hMainMenu - имел значение описателя родительского по отношению к всплывающему меню окна. Структура, приведенная ниже, обеспечивает удобный путь для установки соответствия между описателями меню и базой строковых ресурсов:

typedef struct tagPOPUPSTRING

HMENU hMenu; UINT uiString;

В программе GADGETS, в которой три пункта меню содержат всплывающие меню, эта структура данных определяется так:

POPUPSTRING popstr;

и инициализируется при создании строки статуса следующим образом:

GetMenu(hwndParent);

IDS_MAIN_MENU;

GetSubMenu(hMainMenu, 2);

IDS_TOOLBAR_MENU;

GetSubMenu(hMainMenu, 3);

IDS_STATUSBAR_MENU;

При получении сообщения WM_MENUSELECT параметр lParam содержит описатель меню родительского окна. Работа функции MenuHelp по подбору правильного ресурса строки требует от вас поиска в массиве и передачи адреса, как последнего параметра функции MenuHelp . Ниже показано, как это реализуется в программе GADGETS:

if((fuFlags & MF_POPUP) &&(!(fuFlags & MF_SYSMENU)))

for(iMenu = 1; iMenu < MAX_MENUS; iMenu++)

Для того чтобы это работало корректно, hMainMenu должен быть установлен в значение описателя родительского меню всплывающего меню. Пока мы рассматривали обработку своих всплывающих меню, мы совершенно забыли о системном меню.

Просмотр системного меню

Функция MenuHelp обеспечивает индикацию в строке состояния вспомогательной информации для системного меню и элементов системного меню. Все, что необходимо для этого - параметры сообщения WM_MENUSELECT wParam и lParam в том же виде, что и для других типов элементов меню. Кроме того, значение hMainMenu не должно быть равно реальному описателю системного меню; NULL - вполне подходит.

Объединим теперь все эти фрагменты для элементов меню, всплывающих меню и системного меню. Ниже приведен код, иллюстрирующий то, каким образом программа GADGETS обрабатывает сообщение WM_MENUSELECT для того, чтобы отобразить вспомогательную информацию в строке состояния:

LRESULT Statusbar_MenuSelect(HWND hwnd, WPARAM wParam, LPARAM lParam)

UINT fuFlags =(UINT) HIWORD(wParam); HMENU hMainMenu = NULL;

// Обработка несистемных всплывающих меню if((fuFlags & MF_POPUP) &&(!(fuFlags & MF_SYSMENU)))

for(iMenu = 1; iMenu < MAX_MENUS; iMenu++)

if((HMENU) lParam == popstr.hMenu)

hMainMenu =(HMENU)lParam; break;

// Отображение вспомогательной информации в строке состояния

MenuHelp(WM_MENUSELECT, wParam, lParam, hMainMenu, hInst, hwndStatusBar, &((UINT) popstr.hMenu));

Строка состояния

В нижней части окна находится строка состояния (рис. 1.39). Это еще один элемент интерфейса, который в Word 2007 подвергся изменению и доработке.

Рис. 1.39. Строка состояния


Кроме традиционных данных о документе (общего количества страниц в документе и номера текущей страницы) в Word 2007 на строке состояния появились новые элементы.

Практически все информационные блоки на строке состояния являются кнопками, предназначенными для быстрого вызова команд. При щелчке на кнопке с количеством страниц открывается окно Найти и заменить, позволяющее быстро перейти к другой странице документа. Щелчок на кнопке с количеством слов открывает окно статистики документа, которое показывает количество строк, абзацев, знаков без пробелов и с пробелами. Это очень полезно при написании статей и рефератов. В предыдущих версиях Word вызывать окно статистики было гораздо менее удобно.

Если Word не обнаружил орфографических ошибок в документе, то значок проверки орфографии называется Ошибки правописания не найдены и имеет вид раскрытой книги с зеленой «птичкой». Если Word считает какие-то слова в документе ошибочными, то этот значок принимает вид книги с красным крестиком и его название изменяется на Найдены ошибки правописания, щелкните для исправления. При щелчках на этом значке Word последовательно выделяет в тексте слова с ошибками и выводит на экран контекстное меню, содержащее варианты действий с этим словом (рис. 1.40). Если в словаре Word есть похожие слова, то они отображаются в данном меню. Если щелкнуть на слове в меню, то оно будет вставлено вместо ошибочного. С помощью этого меню также можно пропустить текущее ошибочное слово и перейти к следующему, пропустить все аналогичные ошибочные слова или добавить слово в словарь программы. Это очень полезная возможность, так как словарь Word хоть и достаточно обширный, но в нем зачастую нет вполне распространенных слов. Особенно эта функция актуальна, если вы часто работаете со специализированными текстами, например медицинскими или техническими. После добавления слова в словарь оно не будет считаться ошибочным.

Рис. 1.40. Контекстное меню для ошибочного слова


Если щелкнуть на кнопке, на которой показан текущий язык документа, откроется окно выбора языка в текущем документе, для которого будет проверяться орфография (рис. 1.41).

Рис. 1.41. Окно выбора языка


В Word 2007 кнопки переключения режимов просмотра документа переместились на строку состояния (в предыдущих версиях Word они находились слева от полосы прокрутки) (см. рис. 1.39). Эти кнопки позволяют выбрать режим просмотра документа: Разметка страницы, Режим чтения, Веб-документ, Структура и Черновик. Различные режимы отображения документа служат для изменения способа восприятия информации пользователем. Подробнее эти режимы описаны в разд. 2.4.

На строке состояния Word 2007 теперь есть средства для изменения масштаба отображения документа. Если щелкнуть на изображении текущего масштаба документа, то откроется диалоговое окно, в котором можно будет выбрать нужный масштаб из предложенных значений или указать произвольный. Кроме того, масштаб можно изменять с помощью ползунка, перетягивая его влево или вправо и тем самым уменьшая или увеличивая масштаб или щелкая на круглых кнопках с изображением минуса или плюса. При этом масштаб будет уменьшаться или увеличиваться на 10%.

Если вам кажется неудобным изменение масштаба при помощи ползунка или вы никогда не пользуетесь кнопкой для проверки орфографии, вы можете убрать эти блоки со строки состояния. В Word 2007 можно настраивать команды, вынесенные на нее. Для этого щелкните на ней правой кнопкой мыши. В появившемся меню можно не только отключить отображение ненужных команд, но и включить те, которые неактивны по умолчанию, но, возможно, для вас будут полезны (рис. 1.42). Например, вы можете включить отображение номера строки, раздела, столбца, нажатия клавиши Caps Lock и т. д.

Рис. 1.42. Меню настройки строки состояния


Совет

Если у вас возникли вопросы, которые касаются рассмотренных в этой главе тем, обратитесь к разд. 11.3 – возможно, вы найдете ответ на интересующий вас вопрос.