WS_GROUP стиль

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

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

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

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

Как только система имеет следующий или предыдущий элемент управления, он посылает сообщение WM_GETDLGCODE к элементу управления для определения типа элемента управления. Система затем перемещает фокус ввода элемента управления, если это не статический элемент управления. Если элемент управления является автоматический переключатель, система посылает сообщение BM_CLICK на него. Приложение также может использовать GetNextDlgGroupItem для поиска элементов управления в группе.

Как правило первый элемент управления в группе сочетает стили WS_GROUP и WS_TABSTOP, так что пользователь может перемещаться от группы к группе с помощью клавиши tab. Если в группе есть радио-кнопки, приложение следует применять стиль WS_TABSTOP только к первому элементу управления в группе. Система автоматически перемещается при переходе между элементами управления в группе. Это гарантирует, что фокус ввода всегда будет на последнего выбранного элемента управления, когда пользователь перемещается в группу с помощью клавиши tab.

Index