Программирование в системе Windows2000, страница 6

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

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

Если пользователь вводит текст у края окна или помещает объект в каком-то месте у края окна, должна быть выполнена прокрутка окна, чтобы пользователь мог лучше видеть ту область объекта, в которой он работает. Величина прокрутки зависит от контекста приложения. Например, если пользователь набирает все новые и новые строки текста в окне, прокрутка окна должна выполняться на одну строку. При прокрутке по горизонтали единица длины прокрутки должна быть больше ширины одного символа для предотвращения непрерывной прокрутки. Кроме того, если пользователь перемещает графический объект к краю окна, размер единицы длины прокрутки должен быть выбран с учетом величины объекта.  Если какая-либо операция, например поиск, приводит к выбору объекта или перемещению курсора, должна выполняться прокрутка окна для отображения нового выбранного объекта или для показа позиции курсора. Еще одним примером является форма для ввода информации: окно должно прокручиваться вслед за перемещением курсора к полям, которые не показаны в текущей области просмотра окна.

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

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

Разбиениеокон

В некоторых приложениях бывает удобно разбить окно на две области просмотра, которые могут отображать разную информацию об объектах данных. Примером этого является программа Windows Explorer (рис. 1.6). Эти отдельные области просмотра в окне называются областями окна.

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

Рисунок 1.6.

Окно с разделителем

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

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