Навигация Tab'ом
От: Аноним  
Дата: 11.08.05 12:40
Оценка:
Как в GUI'вом приложении на WinAPI организовать переключение оконного фокуса между контролами по нажатию клавиши Tab?
Re: Навигация Tab'ом
От: AcidTheProgrammer Россия https://hts.tv/
Дата: 11.08.05 12:41
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Как в GUI'вом приложении на WinAPI организовать переключение оконного фокуса между контролами по нажатию клавиши Tab?


Используй IsDialogMessage в цикле выборки ссобщений.
Re[2]: Навигация Tab'ом
От: Аноним  
Дата: 11.08.05 12:47
Оценка:
Здравствуйте, AcidTheProgrammer, Вы писали:

ATP>Здравствуйте, Аноним, Вы писали:


А>>Как в GUI'вом приложении на WinAPI организовать переключение оконного фокуса между контролами по нажатию клавиши Tab?


ATP>Используй IsDialogMessage в цикле выборки ссобщений.

Главное и дочерние окна (кнопки, едитбоксы) созданы динамически через CreateWindow.
Re[3]: Навигация Tab'ом
От: rus blood Россия  
Дата: 11.08.05 13:12
Оценка:
Здравствуйте, Аноним, Вы писали:

ATP>>Используй IsDialogMessage в цикле выборки ссобщений.

А>Главное и дочерние окна (кнопки, едитбоксы) созданы динамически через CreateWindow.

1. Для дочерних контролов указывать стиль WS_TABSTOP.
2. Для родительских окон указывать ex-стиль WS_EX_CONTROLPARENT.
3. IsDialogMessage в цикле сообщений.
Имею скафандр — готов путешествовать!
Re[4]: Навигация Tab'ом
От: Henry Twilight Россия  
Дата: 11.08.05 13:59
Оценка:
Здравствуйте, rus blood, Вы писали:

ATP>>>Используй IsDialogMessage в цикле выборки ссобщений.

А>>Главное и дочерние окна (кнопки, едитбоксы) созданы динамически через CreateWindow.

RB>1. Для дочерних контролов указывать стиль WS_TABSTOP.

Есть
RB>2. Для родительских окон указывать ex-стиль WS_EX_CONTROLPARENT.
Есть
RB>3. IsDialogMessage в цикле сообщений.
А вот это исходя из назначения функции (как я его понял по МСДН) чистая магия. Оно, конечно, работает, НО:
    1. EditBox'ы фокус не отдают
    2. При активации какого-либо пункта меню он вызывается ДВА раза.
Re: Навигация Tab'ом
От: danclax  
Дата: 11.08.05 18:28
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Как в GUI'вом приложении на WinAPI организовать переключение оконного фокуса между контролами по нажатию клавиши Tab?


Я создавал окно через CreateDialogIndirect, а дальше создавай конторы в той последовательности, в котором мне нужна была табуляция
Re[2]: Навигация Tab'ом
От: Henry Twilight Россия  
Дата: 12.08.05 09:14
Оценка:
Здравствуйте, danclax, Вы писали:

D>Здравствуйте, Аноним, Вы писали:


А>>Как в GUI'вом приложении на WinAPI организовать переключение оконного фокуса между контролами по нажатию клавиши Tab?


D>Я создавал окно через CreateDialogIndirect, а дальше создавай конторы в той последовательности, в котором мне нужна была табуляция


Можно ли организовать это все-таки не используя ДиалогБокс? Проблема сейчас только в том, что ЭдитБокс не отдают фокус, с другими контролами всё в порядке. Окна создаются при помощи CreateWindow, у всех дочерних контролов стоит WS_TABSTOP и WS_GROUP.
Re: Навигация Tab'ом
От: anvaka Украина Yasiv
Дата: 12.08.05 12:15
Оценка:
Здравствуйте, Аноним!

Возможно окажется полезной для вас следующая статья:

Modeless child dialog in a Main Dialog with corrected tab order
Re[3]: Навигация Tab'ом
От: kero Россия  
Дата: 14.08.05 05:25
Оценка:
Здравствуйте, Henry Twilight, Вы писали:

HT>Можно ли организовать это все-таки не используя ДиалогБокс? Проблема сейчас только в том, что ЭдитБокс не отдают фокус, с другими контролами всё в порядке. Окна создаются при помощи CreateWindow, у всех дочерних контролов стоит WS_TABSTOP и WS_GROUP.


Вот демка с исходником на MASM32: http://www.geocities.com/xmemor/2lz/win2dlg.zip

CreateWindowEx (без WS_EX_CONTROLPARENT) + IsDialogMessage,
Без сабклассинга,
Эдиты — без ES_MULTILINE.
Обратите внимание, что IsDialogMessage творит с BS_DEFPUSHBUTTON.
По всему, пашиным хозяевам позарез нужна война в Европе
(уверены — к ним не залетит, в предыдущих двух не залетало жеж)
Автор: kero
Дата: 21.07.14
Re: Навигация Tab'ом
От: Henry Twilight Россия  
Дата: 15.08.05 11:47
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Как в GUI'вом приложении на WinAPI организовать переключение оконного фокуса между контролами по нажатию клавиши Tab?

Сейчас, вроде, работает, но есть один нюанс: Edit Control не отдаёт фокус. При этом сам он табуляцию не обрабатывает, т.е. нажатие клавиши Tab если фокус на Едит боксе не приводит ни к чему. Как всё-таки отобрать фокус у Едита?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.