Здравствуйте, Аноним, Вы писали:
А>Как в GUI'вом приложении на WinAPI организовать переключение оконного фокуса между контролами по нажатию клавиши Tab?
Используй IsDialogMessage в цикле выборки ссобщений.
Re[2]: Навигация Tab'ом
От:
Аноним
Дата:
11.08.05 12:47
Оценка:
Здравствуйте, AcidTheProgrammer, Вы писали:
ATP>Здравствуйте, Аноним, Вы писали:
А>>Как в GUI'вом приложении на WinAPI организовать переключение оконного фокуса между контролами по нажатию клавиши Tab?
ATP>Используй IsDialogMessage в цикле выборки ссобщений.
Главное и дочерние окна (кнопки, едитбоксы) созданы динамически через CreateWindow.
Здравствуйте, Аноним, Вы писали:
ATP>>Используй IsDialogMessage в цикле выборки ссобщений. А>Главное и дочерние окна (кнопки, едитбоксы) созданы динамически через CreateWindow.
1. Для дочерних контролов указывать стиль WS_TABSTOP.
2. Для родительских окон указывать ex-стиль WS_EX_CONTROLPARENT.
3. IsDialogMessage в цикле сообщений.
Здравствуйте, rus blood, Вы писали:
ATP>>>Используй IsDialogMessage в цикле выборки ссобщений. А>>Главное и дочерние окна (кнопки, едитбоксы) созданы динамически через CreateWindow.
RB>1. Для дочерних контролов указывать стиль WS_TABSTOP.
Есть RB>2. Для родительских окон указывать ex-стиль WS_EX_CONTROLPARENT.
Есть RB>3. IsDialogMessage в цикле сообщений.
А вот это исходя из назначения функции (как я его понял по МСДН) чистая магия. Оно, конечно, работает, НО: 1. EditBox'ы фокус не отдают
2. При активации какого-либо пункта меню он вызывается ДВА раза.
Здравствуйте, Аноним, Вы писали:
А>Как в GUI'вом приложении на WinAPI организовать переключение оконного фокуса между контролами по нажатию клавиши Tab?
Я создавал окно через CreateDialogIndirect, а дальше создавай конторы в той последовательности, в котором мне нужна была табуляция
Здравствуйте, danclax, Вы писали:
D>Здравствуйте, Аноним, Вы писали:
А>>Как в GUI'вом приложении на WinAPI организовать переключение оконного фокуса между контролами по нажатию клавиши Tab?
D>Я создавал окно через CreateDialogIndirect, а дальше создавай конторы в той последовательности, в котором мне нужна была табуляция
Можно ли организовать это все-таки не используя ДиалогБокс? Проблема сейчас только в том, что ЭдитБокс не отдают фокус, с другими контролами всё в порядке. Окна создаются при помощи CreateWindow, у всех дочерних контролов стоит WS_TABSTOP и WS_GROUP.
Здравствуйте, Henry Twilight, Вы писали:
HT>Можно ли организовать это все-таки не используя ДиалогБокс? Проблема сейчас только в том, что ЭдитБокс не отдают фокус, с другими контролами всё в порядке. Окна создаются при помощи CreateWindow, у всех дочерних контролов стоит WS_TABSTOP и WS_GROUP.
CreateWindowEx (без WS_EX_CONTROLPARENT) + IsDialogMessage,
Без сабклассинга,
Эдиты — без ES_MULTILINE.
Обратите внимание, что IsDialogMessage творит с BS_DEFPUSHBUTTON.
Здравствуйте, Аноним, Вы писали:
А>Как в GUI'вом приложении на WinAPI организовать переключение оконного фокуса между контролами по нажатию клавиши Tab?
Сейчас, вроде, работает, но есть один нюанс: Edit Control не отдаёт фокус. При этом сам он табуляцию не обрабатывает, т.е. нажатие клавиши Tab если фокус на Едит боксе не приводит ни к чему. Как всё-таки отобрать фокус у Едита?