Строки состояния (элементы управления Windows)
Строка состояния — это горизонтальное окно в нижней части родительского окна, в котором приложение может отображать различные типы сведений о состоянии. Строку состояния можно разделить на части для отображения нескольких типов сведений. На следующем снимке экрана показана строка состояния в приложении Microsoft Windows Paint. В этом случае в строке состояния содержится текст «Для справки, щелкните разделы справки в меню «Справка». Строка состояния — это область в нижней части окна, содержащая текст справки и сведения о координатах.

Этот раздел содержит следующие темы.
- Типы и стили
- Размер и высота
- Многокомпонентные столбцы состояния
- Операции с текстом в строке состояния
- Нарисованные владельцем столбцы состояния
- Панели состояния простого режима
- Обработка сообщений в строке состояния по умолчанию
Типы и стили
Позиция строки состояния по умолчанию находится в нижней части родительского окна, но можно указать стиль CCS_TOP , чтобы она отображалась в верхней части клиентской области родительского окна.
Вы можете указать стиль SBARS_SIZEGRIP , чтобы включить захват размера в правом конце строки состояния.
Не рекомендуется комбинировать стили CCS_TOP и SBARS_SIZEGRIP , так как результирующий захват размера не работает.
Размер и высота
Процедура окна для строки состояния автоматически задает начальный размер и положение окна, игнорируя значения, указанные в функции CreateWindowEx . Ширина совпадает с шириной клиентской области родительского окна. Высота зависит от метрик шрифта, выбранного в настоящее время в контексте устройства строки состояния, и ширины границ окна.
Процедура окна автоматически настраивает размер строки состояния при получении WM_SIZE сообщения. Как правило, при изменении размера родительского окна родитель отправляет WM_SIZE сообщение в строку состояния.
Приложение может задать минимальную высоту области рисования строки состояния, отправляя в окно сообщение SB_SETMINHEIGHT , указывая минимальную высоту в пикселях. Область рисования не включает границы окна. Минимальная высота полезна для рисования в строке состояния, нарисованной владельцем. Дополнительные сведения см. в разделе Нарисованные владельцами столбцы состояния далее в этой главе.
Ширину границ строки состояния можно получить, отправив в окно сообщение SB_GETBORDERS . Сообщение содержит адрес массива из трех элементов, который получает ширину.
Multiple-Part столбцы состояния
Строка состояния может содержать множество разных частей, каждая из которых отображает разные строки текста. Вы разделяете строку состояния на части, отправляя в окно SB_SETPARTS сообщение, указывая количество создаваемых частей и адрес массива целых чисел. Массив содержит по одному элементу для каждой части, и каждый элемент указывает координату клиента правого края части.
Строка состояния может содержать не более 256 частей, хотя приложения обычно используют гораздо меньше. Вы можете получить количество частей в строке состояния, а также координату правого края каждой части, отправляя в окно сообщение SB_GETPARTS .
Операции с текстом в строке состояния
Текст любой части строки состояния задается путем отправки сообщения SB_SETTEXT , указания отсчитываемого от нуля индекса части, адреса строки для рисования в части и способа рисования строки. Метод рисования определяет, имеет ли текст границу и, если это так, стиль границы. Он также определяет, отвечает ли родительское окно за рисование текста. Дополнительные сведения см. в разделе «Нарисованные владельцами столбцы состояния » ниже.
По умолчанию текст выравнивается по левому краю в указанной части строки состояния. Вы можете внедрить символы табуляции (\t) в текст, чтобы выровнять его по центру или по правому краю. Текст справа от одного символа табуляции выравнивается по центру, а текст справа от второго символа табуляции выравнивается по правому краю.
Если приложение использует строку состояния, которая содержит только одну часть, можно использовать WM_SETTEXT, WM_GETTEXT и WM_GETTEXTLENGTH сообщения для выполнения текстовых операций. Эти сообщения относятся только к части, индекс которой равен нулю, что позволяет обрабатывать строку состояния так же, как статический текстовый элемент управления.
Чтобы отобразить строку состояния без создания строки состояния, используйте функцию DrawStatusText . Функция использует те же методы для рисования состояния, что и процедура окна для строки состояния, но она не задает автоматически размер и положение сведений о состоянии. При вызове функции необходимо указать размер и положение сведений о состоянии, а также контекст устройства в окне, в котором она будет отображаться.
Owner-Drawn столбцы состояния
Вы можете определить отдельные части строки состояния, чтобы они были нарисованы владельцем. Использование этого метода дает вам больше контроля, чем в противном случае, над внешним видом части окна. Например, можно отобразить точечный рисунок, а не текст, или нарисовать текст с помощью другого шрифта.
Чтобы определить часть окна как нарисованную владельцем, отправьте сообщение SB_SETTEXT в строку состояния, указав часть и метод рисования SBT_OWNERDRAW. Если указано SBT_OWNERDRAW, параметр lParam является 32-разрядным значением, определяемым приложением, которое приложение может использовать при рисовании части. Например, можно указать дескриптор шрифта, дескриптор точечных рисунков, адрес строки и т. д.
Если в строке состояния нужно нарисовать часть, нарисованную владельцем, она отправляет сообщение WM_DRAWITEM в родительское окно. Параметр wParam сообщения является идентификатором дочернего окна строки состояния, а параметр lParam — адрес структуры DRAWITEMSTRUCT . Родительское окно использует сведения в структуре для рисования части. Для части строки состояния, нарисованной владельцем, DRAWITEMSTRUCT содержит следующие сведения.
| Член | Описание |
|---|---|
| CtlType | Неопределенный; не использовать. |
| CtlID | Идентификатор дочернего окна строки состояния. |
| Itemid | Отсчитываемый от нуля индекс отрисовки части. |
| itemAction | Неопределенный; не использовать. |
| ItemState | Неопределенный; не использовать. |
| hwndItem | Дескриптор в строке состояния. |
| Hdc | Обработка контекста устройства в строке состояния. |
| rcItem | Координаты отрисовываемой части окна. Координаты находятся относительно левого верхнего угла строки состояния. |
| Itemdata | Определяемое приложением 32-разрядное значение, указанное в параметре lParamсообщения SB_SETTEXT . |
Панели состояния простого режима
Вы переводите строку состояния в «простой режим», отправляя ей SB_SIMPLE сообщение. В строке состояния простого режима отображается только одна часть. Если задан текст окна, окно становится недействительным, но не будет перерисовывано до следующего WM_PAINT. Ожидание сообщения уменьшает мерцание экрана, сводя к минимуму количество перерисовок окна. Строка состояния простого режима полезна для отображения текста справки для пунктов меню во время прокрутки меню.
Строка, отображаемая в строке состояния в простом режиме, сохраняется отдельно от строк, отображаемых в режиме неимпля. Это означает, что вы можете перевести окно в простой режим, задать его текст и вернуться в неимпляющий режим без изменения текста в непечатаемом режиме.
При задании текста в строке состояния простого режима можно указать любой метод рисования, кроме SBT_OWNERDRAW. Строка состояния простого режима не поддерживает рисование владельца.
Обработка сообщений в строке состояния по умолчанию
В этом разделе описываются сообщения, обрабатываемые процедурой window для предопределенного класса STATUSCLASSNAME .
| Сообщение | Обработка по умолчанию |
|---|---|
| WM_CREATE | Инициализирует строку состояния. |
| WM_DESTROY | Освобождает ресурсы, выделенные для строки состояния. |
| WM_GETFONT | Возвращает дескриптор текущего шрифта, с помощью которого строка состояния рисует свой текст. |
| WM_GETTEXT | Копирует текст из первой части строки состояния в буфер. Он возвращает 32-разрядное значение, указывающее длину текста в символах и метод, используемый для рисования текста. |
| WM_GETTEXTLENGTH | Возвращает 32-разрядное значение, указывающее длину (в символах) текста в первой части строки состояния и метод, используемый для рисования текста. |
| WM_NCHITTEST | Возвращает значение HTBOTTOMRIGHT, если курсор мыши находится в захвате размера, что приводит к отображению курсора изменения размера системой. Если курсор мыши не находится в захвате размера, строка состояния передает это сообщение в функцию DefWindowProc . |
| WM_PAINT | Закрашивает недопустимую область строки состояния. Если параметр wParam не равен NULL, элемент управления предполагает, что значение является HDC, и рисует с помощью этого контекста устройства. |
| WM_SETFONT | Выбирает дескриптор шрифта в контексте устройства для строки состояния. |
| WM_SETTEXT | Копирует указанный текст в первую часть строки состояния, используя операцию рисования по умолчанию (задано как ноль). Он возвращает значение TRUE в случае успешного выполнения или FALSE в противном случае. |
| WM_SIZE | Изменяет размер строки состояния в зависимости от текущей ширины клиентской области родительского окна и высоты текущего шрифта строки состояния. |
Столбцы состояния (основы проектирования)
Это руководство по проектированию было создано для Windows 7 и не обновлялось для более новых версий Windows. Большая часть руководства по-прежнему применяется в принципе, но презентация и примеры не отражают наше текущее руководство по проектированию.
Строка состояния — это область в нижней части основного окна, в которой отображаются сведения о состоянии текущего окна (например, что просматривается и как), фоновые задачи (например, печать, сканирование и форматирование) или другие контекстные сведения (например, выбор и состояние клавиатуры).
Строки состояния обычно указывают состояние с помощью текста и значков, но они также могут содержать индикаторы хода выполнения, а также меню для команд и параметров, связанных с состоянием.

Типичная строка состояния.
Рекомендации, связанные с областью уведомлений , представлены в отдельной статье.
Это правильный пользовательский интерфейс?
Чтобы определиться, ответьте на вопросы:

- Является ли состояние актуальным, когда пользователи активно используют другие программы? Если да, используйте значки области уведомлений.
- Нужно ли отображать уведомления в элементе состояния? В этом случае необходимо использовать значок области уведомлений.
- Является ли окно основным окном? В противном случае не используйте строку состояния. Диалоговые окна, мастера, панели управления и листы свойств не должны содержать строки состояния.
- Является ли информация в первую очередь состоянием? В противном случае не используйте строку состояния. Строки состояния не должны использоваться в качестве дополнительной строки меню или панели инструментов.
- Содержатся ли сведения о том, как использовать выбранный элемент управления? Если это так, отобразите сведения рядом со связанным элементом управления с помощью дополнительного объяснения или метки инструкции.
- Является ли состояние полезным и актуальным? То есть, могут ли пользователи изменить свое поведение в результате этой информации? В противном случае не отображайте состояние или поместите его в файл журнала.
- Является ли состояние критическим? Требуются ли немедленные действия? Если это так, отобразите информацию в форме, требующей внимания и которая не может быть легко проигнорирована, например в диалоговом окне или в самом основном окне. Красная адресная строка в Windows Internet Обозреватель.
- Предназначена ли программа в первую очередь для начинающих пользователей? Неопытные пользователи, как правило, не знают о строках состояния, поэтому пересмотрите использование строк состояния в этом случае.
Принципы проектирования
Строки состояния — это отличный способ предоставления сведений о состоянии, не прерывая работу пользователей и не нарушая их поток. Тем не менее, строки состояния легко заметить. Настолько просто, что многие пользователи вообще не замечают строк состояния.
Решение этой проблемы заключается не в том, чтобы требовать внимания пользователя с помощью значков, анимации или мигания, а в разработке для этого ограничения. Выполнить это можно следующим образом:
- Убедитесь, что сведения о состоянии полезны и актуальны. В противном случае не указывайте строку состояния.
- Не используйте строки состояния для получения важных сведений. Пользователям никогда не нужно знать, что находится в строке состояния. Если пользователи должны видеть его, не помещайте его в строку состояния.
Если вы делаете только одно.
Убедитесь, что сведения в строке состояния полезны и актуальны, но не важны.
Варианты использования
В строках состояния есть несколько шаблонов использования:
| Использование | Пример |
|---|---|
| Текущее состояние окна Отображение источника отображаемого содержимого вместе с любыми режимами представления |
В этом примере в строке состояния отображается путь к документу. |
| Ход выполнения Отображение хода выполнения фоновых задач с помощью определенного индикатора выполнения или анимации. |
В этом примере строка состояния содержит индикатор выполнения, отображающий загрузку веб-страницы в окно интернет-Обозреватель. |
| контекстные сведения. Отображение контекстной информации о том, что пользователь в настоящее время делает. |
В этом примере Microsoft Paint показывает размер выделенного фрагмента в пикселях. |
Рекомендации
Общие сведения
- Рассмотрите возможность предоставления команды Просмотр строки состояния, если только некоторым пользователям потребуется информация о строке состояния. Скройте строку состояния по умолчанию, если она не нужна большинству пользователей.
- Не используйте строку состояния для объяснения пунктов строки меню. Этот шаблон справки недоступен для обнаружения.
Уровень представления
- Отключите модальное состояние, которое не применяется. Модальное состояние включает состояния клавиатуры и документа.
- Удалите немодальное состояние, которое не применяется.
- Представить сведения о состоянии в следующем порядке: текущее состояние окна; Прогресс; и контекстно-информативная информация.
Значки
- Выберите легко узнаваемые макеты значков состояния. Предпочитать значки с уникальными контурами вместо значков квадратной или прямоугольной формы.
- Используйте полоски чисто красного, желтого и зеленого только для передачи сведений о состоянии. В противном случае такие значки запутывают. Правильно:
Неправильно:
В неправильном примере красный значок непреднамеренно указывает на ошибку, что создает путаницу. - Используйте варианты значков или наложения, чтобы указать состояние или изменения состояния. Используйте варианты значков для отображения изменений в количествах или сильных сторонах. Для других типов состояния используйте следующие стандартные наложения:
Наложение Состояние 
Предупреждение 
Ошибка 
Отключено или отключено 
Заблокировано или в автономном режиме - Не изменяйте состояние слишком часто. Значки строки состояния не должны выглядеть шумно, нестабильно или требовать внимания. Глаз чувствителен к изменениям в периферийном поле зрения, поэтому изменения состояния должны быть тонкими.
- Для значков, предоставляющих важные сведения о состоянии, рекомендуется использовать метки на месте.
- Значки строки состояния без метки должны содержать подсказки.
Дополнительные сведения см. в разделе Значки.
Взаимодействие
- Сделайте область строки состояния интерактивной, чтобы разрешить пользователям прямой доступ к связанным командам и параметрам.
- Используйте элемент управления, который выглядит и ведет себя как кнопка меню или разделенная кнопка. Эти области строки состояния должны иметь стрелку раскрывающегося списка, чтобы указать, что они доступны для щелчка.
- Отображение меню при щелчке левой кнопкой мыши вниз, а не вверх.
- Не поддерживается щелчок правой кнопкой мыши или двойной щелчок. Пользователи не ожидают таких взаимодействий в строке состояния, поэтому они вряд ли будут пытаться их выполнить.
Текст
- Как правило, используйте краткие метки. Вырезать любой текст, который можно исключить.
- Предпочитать фрагменты предложений без прекращения пунктуации. Используйте полные предложения (с завершающей пунктуацией) только в том случае, если фрагменты предложений не являются значительно короче.
- Для необязательных меток хода выполнения укажите, что делает операция, с помощью метки, которая начинается с глагола (форма gerund) и заканчивается многоточием. Например: «Копирование. «. Эта метка может динамически изменяться, если операция состоит из нескольких шагов или обрабатывает несколько объектов.
- Не используйте цвет, полужирный шрифт или курсив для выделения текста строки состояния.
- Рекомендации по созданию выражений с подсказками см. в разделе Подсказки и подсказки.
Документация
Строки состояния называются строками состояния, а не строками состояния или другими вариантами. Пример: «Текущий номер страницы отображается в строке состояния».
Обратная связь
Были ли сведения на этой странице полезными?
Строки состояния
Строки состояния предоставляют приложению место для отображения сообщений и полезных сведений пользователю без прерывания работы пользователя. Как правило, в нижней части окна в строках состояния есть «панели», которые включают «индикаторы» и «строку сообщения». Индикаторы дают состояние таких вещей, как SCROLL LOCK, включена ли запись макроса и т. д. Строка сообщения в строке состояния может отображать сведения о состоянии программы или панели инструментов или элементе меню, на который указывает пользователь с помощью мыши.
Создайте строку состояния в программе, выбрав параметр начальной строки состояния в мастере приложений MFC.
Что вы хотите узнать больше о
- Реализация строки состояния в MFC
- Обновление текста панели состояния
- Создание новой панели состояния (обновление текста панели состояния панели состояния)
- Отображение текста панели состояния (обновление текста панели состояния панели состояния)
- Отображение сведений о команде в строке состояния
Как записывается адрес в строку состояния
Ваши программы JavaScript могут писать в строку состояния – это область снизу вашего окна браузера. Все, что вы должны сделать, это указать строку в window.status. Следующий пример показывает вам две кнопки, которые могут использоваться, чтобы записать в строку состояния и опять стереть текст.
Сценарий выглядит следующим образом:Мы создаем форму с двумя кнопками. Обе кнопки вызывают функцию statbar(). Посмотрите, как выглядит обращение к функции, созданное кнопкой Write!:
Внутри скобок мы определяем строку "Hi! This is the statusbar!" Это значит, что строка передаётся в функцию statbar(). Вы видите, что мы определили функцию statbar(), как показано ниже:
Что является новым – то, что мы используем txt внутри скобок имени функции. Это означает строка, которую мы передали в функциу, сохранена в переменной txt. Передача переменных в функции – часто используемый путь для создания более гибких функций. вы можете передавать несколько значений в функции – вы только должны отделить их через запятые.
Строка txt отображается в строке состояния через window.status = txt.
Стирание текста в строке состояния — достигаеться через задание пустой строки в window.status.Показ текста в строке состояния может легко использоваться в комбинации с ссылками. Вместо того, чтобы показывать URL связи вы можете объяснять на словах, относительно чего следующая страница. Эта ссылка показывает это – только переместите ваш курсор поверх ссылки. Код для этого примера выглядит следующим образом:
Здесь мы используем onMouseOver и onMouseOut, чтобы обнаружить, когда курсор перемещается поверх ссылки.
Вы можете задать вопрос, почему мы должны писать return true внутри свойства onMouseOver. Это означает, что браузер не будет выполнять собственный код как реакцию на событие MouseOver. Обычно браузер отображает URL ссылки в строке состояния. Если мы не используем return true, браузер будет писать в строку состояния сразу после того, как наш код был выполнен – это означает, что браузер записало поверх нашего текста, и пользователь не смог бы прочитать его. В общем, мы можем подавить такие действия браузера, используя return true в обработчике событий.
onMouseOut не существовал в JavaScript 1.0. Вы можете получить различные результаты на различных платформах. На Unix платформах например текст исчезнет даже при том, что браузер не знает onMouseOut. В Windows текст останется. Если вы хотите, чтобы ваш сценарий был совместимым, вы могли бы например писать функцию, которая пишет текст в строку состояния и стирает этот текст после некоторого периода времени. Это программируется с использованием таймаутов. Мы узнаем больше относительно таймаутов в следующем разделе.
В этом сценарии вы можете видеть другую вещь – иногда вы хотите вывести кавычки. Мы хотим вывети строку Don't click me — поскольку мы определяем эту строку внутри onMouseOver обработчика событий, мы используем одиночные кавычки. Но слово Don't тоже использует одиночную кавычку! Броузер запутается, если вы просто напишете 'Don't . '. Чтобы решить эту проблему, вы можете просто написать наклонную черту влево \ перед кавычкой – что означает, что она принадлежит выводу (вы можете проделать тоже самое с двойными кавычками « ).
Панели состояния (элементы управления Windows)
Строка состояния — это горизонтальное окно в нижней части родительского окна, в котором приложение может отображать различные типы сведений о состоянии. Строка состояния может быть разделена на части для отображения нескольких типов сведений. На следующем снимке экрана показана строка состояния в приложении Microsoft Windows Paint. В этом случае строка состояния содержит текст «Для справки, щелкните «Разделы справки» в меню справки». Строка состояния — это область в нижней части окна, содержащая текст справки и сведения о координатах.

Этот раздел содержит следующие темы.
Типы и стили
Положение строки состояния по умолчанию находится в нижней части родительского окна, но вы можете указать стиль CCS_TOP , чтобы он отображалась в верхней части клиентской области родительского окна.
Вы можете указать стиль SBARS_SIZEGRIP , чтобы включить захват изменения размера в правом конце строки состояния.
Объединение стилей CCS_TOP и SBARS_SIZEGRIP не рекомендуется, так как результирующий захват размера не работает.
Размер и высота
Процедура окна для строки состояния автоматически задает начальный размер и положение окна, игнорируя значения, указанные в функции CreateWindowEx . Ширина совпадает с шириной клиентской области родительского окна. Высота основана на метриках шрифта, выбранного в контексте устройства строки состояния, и на ширине границ окна.
Процедура окна автоматически настраивает размер строки состояния при получении сообщения WM_SIZE . Как правило, при изменении размера родительского окна родитель отправляет WM_SIZE сообщение в строку состояния.
Приложение может задать минимальную высоту области рисования строки состояния, отправив окно SB_SETMINHEIGHT сообщение, задав минимальную высоту в пикселях. Область рисования не включает границы окна. Минимальная высота полезна для рисования в строке состояния, нарисованной владельцем. Дополнительные сведения см. далее в этой главе.
Вы получите ширину границ строки состояния, отправив окно SB_GETBORDERS сообщение. Сообщение содержит адрес массива из трех элементов, который получает ширину.
строки состояния Multiple-Part
Строка состояния может содержать множество различных частей, каждая из которых отображает другую строку текста. Строка состояния делится на части, отправляя окно SB_SETPARTS сообщение, указывая количество частей для создания и адрес целочисленного массива. Массив содержит один элемент для каждой части, а каждый элемент задает клиентская координата правой границы части.
Строка состояния может содержать не более 256 частей, хотя приложения обычно используют гораздо меньше, чем это. Вы получите количество частей в строке состояния, а также координату правого края каждой части, отправив окно SB_GETPARTS сообщение.
Текстовые операции строки состояния
Вы задаете текст любой части строки состояния, отправляя сообщение SB_SETTEXT , указывая отсчитываемый от нуля индекс части, адрес строки для рисования в части и метод рисования строки. Метод рисования определяет, имеет ли текст границу и стиль границы. Он также определяет, отвечает ли родительское окно за рисование текста. Дополнительные сведения см. в разделе «Гистограммы состояния владельца » ниже.
По умолчанию текст выравнивается по левому краю в указанной части строки состояния. Символы табуляции (\ t) можно внедрить в текст, чтобы выровнять по центру или по правому краю. Текст справа от одного символа табуляции выравнивается по центру, а текст справа от второго символа табуляции выравнивается по правому краю.
Чтобы получить текст из строки состояния, используйте SB_GETTEXTLENGTH и SB_GETTEXT сообщения.
Если приложение использует строку состояния с одной частью, можно использовать WM_SETTEXT, WM_GETTEXT и WM_GETTEXTLENGTH сообщения для выполнения текстовых операций. Эти сообщения обрабатываются только с частью, которая имеет индекс нуля, что позволяет обрабатывать строку состояния так же, как статический текстовый элемент управления.
Чтобы отобразить строку состояния без создания строки состояния, используйте функцию DrawStatusText . Функция использует те же методы для рисования состояния, что и процедура окна для строки состояния, но не задает автоматически размер и положение сведений о состоянии. При вызове функции необходимо указать размер и положение сведений о состоянии, а также контекст устройства окна, в котором его следует нарисовать.
строки состояния Owner-Drawn
Вы можете определить отдельные части строки состояния, чтобы они были нарисованы владельцем. С помощью этого метода вы получаете больше управления, чем в противном случае, над внешним видом части окна. Например, можно отобразить растровое изображение, а не текст или нарисовать текст с помощью другого шрифта.
Чтобы определить часть окна как нарисованную владельцем, отправьте сообщение SB_SETTEXT в строку состояния, указав часть и метод рисования SBT_OWNERDRAW. При указании SBT_OWNERDRAW параметр lParam представляет собой 32-разрядное значение, которое приложение может использовать при рисовании части. Например, можно указать дескриптор шрифта, точечный дескриптор, адрес строки и т. д.
Когда строке состояния необходимо нарисовать нарисованную владельцем часть, она отправляет сообщение WM_DRAWITEM родительскому окну. Параметр wParam сообщения — это идентификатор дочернего окна строки состояния, а параметр lParam — адрес структуры DRAWITEMSTRUCT . Родительское окно использует сведения в структуре для рисования части. Для нарисованной владельцем части строки состояния DRAWITEMSTRUCT содержит следующие сведения.
Участник Описание CtlType Не определено; не используйте. CtlID Идентификатор дочернего окна строки состояния. Itemid Отсчитываемый от нуля индекс отрисовки части. itemAction Не определено; не используйте. ItemState Не определено; не используйте. hwndItem Дескриптор строки состояния. Hdc Обработка контекста устройства в строке состояния. rcItem Координаты отрисовки части окна. Координаты относятся к левому верхнему углу строки состояния. Itemdata Определяемое приложением 32-разрядное значение, указанное в параметре lParamсообщения SB_SETTEXT . Строки состояния простого режима
Строка состояния помещается в простой режим, отправляя сообщение SB_SIMPLE . В строке состояния простого режима отображается только одна часть. Если задан текст окна, окно становится недействительным, но оно не будет перерисовывано до следующего WM_PAINT. Ожидание сообщения уменьшает мерцание экрана, минимизируя количество перерисовок окна. Строка состояния простого режима полезна для отображения текста справки для элементов меню, пока пользователь прокручивает меню.
Строка, отображаемая строкой состояния в простом режиме, сохраняется отдельно от строк, отображаемых в режиме nonsimple. Это означает, что окно можно поместить в простой режим, задать его текст и вернуться в режим nonsimple без изменения текста в режиме nonsimple.
При настройке текста строки состояния простого режима можно указать любой метод рисования, кроме SBT_OWNERDRAW. Строка состояния простого режима не поддерживает рисование владельца.
Обработка сообщений строки состояния по умолчанию
В этом разделе описываются сообщения, обрабатываемые процедурой окна для предопределенного класса STATUSCLASSNAME .
Строка состояния
Составленные Вами программы на JavaScript могут выполнять запись в строку состояния — прямоугольник в нижней части окна Вашего браузера. Все, что Вам необходимо для этого сделать — всего лишь записать нужную строку в window.status. В следующем примере создаются две кнопки, которые можно использовать, чтобы записывать некий текст в строку состояния и, соответственно, затем его стирать.
Итак, мы создаем форму с двумя кнопками. Обе эти кнопки вызывают функцию statbar(). Вызов от клавиши Писать! выглядит следующим образом:
statbar(‘Привет! Это окно состояния!’);
В скобках мы написали строку: ‘Привет! Это окно состояния!’ Это как раз и будет текст, передаваемый функции statbar(). В свою очередь, можно видеть, что функция statbar() определена следующим образом:
В заголовке функции в скобках мы поместили слово txt. Это означает, что строка, которую мы передали этой функции, помещается в переменную txt. Передача функциям переменных — прием, часто применяемый для придания функциям большей гибкости. Вы можете передать функции несколько таких аргументов — необходимо лишь отделить их друг от друга запятыми. Строка txt заносится в строку состояния посредством команды window.status = txt. Соответственно, удаление текста из строки состояния выполняется как запись в window.status пустой строки.
Механизм вывода текста в строку состояния удобно использовать при работе со ссылками. Вместо того, чтобы выводить на экран URL данной ссылки, Вы можете просто на словах объяснять, о чем будет говориться на следующей странице. Следующая ссылка демонстрирует это — достаточно лишь поместить указатель вашей мыши над этой ссылкой:
Здесь мы пользуемся процедурами onMouseOver и onMouseOut, чтобы отслеживать моменты, когда указатель мыши проходит над данной ссылкой. Вы можете спросить, а почему в onMouseOver мы обязаны возвращать результат true. На самом деле это означает, что браузер не должен вслед за этим выполнять свой собственный код обработки события MouseOver. Как правило, в строке состояния браузер показывает URL соответствующей ссылки. Если же мы не возвратим значение true, то сразу же после того, как наш код был выполнен, браузер перепишет строку состояния на свой лад — то есть наш текст будет тут же затерт и читатель не сможет его увидеть. В общем случае, мы всегда можем отменить дальнейшую обработку события браузером, возвращая true в своей собственной процедуре обработки события.
в JavaScript 1.0 процедура OnMouseOut еще не была представлена. И если Вы пользуетесь Netscape Navigator 2.x, то возможно на различных платформах Вы можете получить различные результаты. Например, на платформах Unix текст исчезает даже несмостря на то, что браузер не знает о существовании процедуры onMouseOut. В Windows текст не исчезает. И если Вы хотите, чтобы ваш скрипт был совместим с Netscape 2.x для Windows, то можете, к примеру, написать функцию, которая записывает текст в окно состояния, а потом стирает его через некоторый промежуток времени. Программируется это с помощью таймера timeout. Подробнее работу с таймерами мы рассмотрим в одном из следующих параграфов.
В этом скрипте Вы можете видеть еще одну вещь — в некоторых случаях Вам понадобится печатать символы кавычек. Например, мы хотим напечатать текст Don’t click me — однако поскольку мы передаем эту строку в процедуру обработки события onMouseOver, то мы используем для этого одинарные кавычки. Между тем, как слово Don’t тоже содержит символ одинарной кавычки! И в результате если Вы просто впишете »Don’t …’,браузер запутается в этих символах ‘. Чтобы разрешить эту проблему, Вам достаточно лишь поставить обратный слэш перед символом кавычки — это означает, что данный символ предназначен именно для печати. (То же самое Вы можете делать и с двойными кавычками — «).
Похожие публикации:
- Как занести холодильник в узкий дверной проем
- Как записать десятичное число 81 в девятеричной системе счисления
- Как записывается инструкция которая формирует символьную строку заданного формата
- Как заполнить пространство в фотошопе