|
Предотвратить срабатывание по Enter для диалога OpenFile
|
|||
---|---|---|---|
#18+
Есть кастомизированный стандартный диалог OpenFile. Одним из custom-элементов является System,Windows.Forms.Toolbar (на самом деле находится на .Net форме, на диалог попадает через SetParent(hwndDialog, Toolbar.Handle) ). Выделил на картинке. Как я писал для .Net -Toolbar характерно понятие "фокус" (почему бы нет). Т.е. мы пришли на Toolbar по TAB (в общей последовательности стандартных и Custom(.Net) элементов диалога), выбрали стрелочками Prev/Next (это все работает). И дальше хотим нажать кнопку. Клавиатурой (!!!), а не мышью. Код: vbnet 1. 2.
Надо думать клавишей ENTER. Но проюлема в том что диалог (hwndDialog) имеет свое назначение для ENTER. Т.е. вместо перемещения на другую страницу картинки (код нажатия кнопки тулбара) срабатывает Enter диалога, т.е. выполняется команда Открыть с закрытием диалога. Как лечить? P.S. в моем распоряжении есть OFNHookProc_Open диалога(где он ловит WM_INITDIALOG, CDN_INITDONE и т.п.), ну и без проблем могу добавить ф-цию в которой реализован сабклассинг собственно окна диалога(hwndDialog). PPS. По идее можно и забить, с учетом того что для верхнего (штатного) тулбара тоже нет способа нажать на кнопку с клавиатуры (только мышью). А фокус он тоже ловит. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2015, 23:13 |
|
Предотвратить срабатывание по Enter для диалога OpenFile
|
|||
---|---|---|---|
#18+
Dialog Box Programming Considerations При нажатии ENTER диалог получает WM_COMMAND c ID_OPEN. Надо проверить, не находится ли Toolbar в "Net-фокусе", если ДА (наш случай), то отменить дефолтную обработку вычислить нажимаемую, т.е. "горячую" кнопку тулбара, вызвать событие ее нажатия в ручном режиме. Задача чем-то похожая на эту: 17288098 Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2015, 05:28 |
|
Предотвратить срабатывание по Enter для диалога OpenFile
|
|||
---|---|---|---|
#18+
Дмитрий77Надо думать клавишей ENTER. 1.всем известно, что кнопка на кот. находится фокус нажимается пробелом. 2.а энтером нажимается AcceptButton диалога ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2015, 16:13 |
|
Предотвратить срабатывание по Enter для диалога OpenFile
|
|||
---|---|---|---|
#18+
pation1.всем известно, что кнопка на кот. находится фокус нажимается пробелом. Ты прав, всем известно, а я как-то привык энтером (если уж совсем честно то мышью). Но энтером она тоже должна нажиматься. pation2.а энтером нажимается AcceptButton диалога Не тогда когда фокус находится на другой Button. Проверь на простейшем Yes/No. Гиморы связаны с тем, что понятие фокуса в System.Windows.Forms. Toolbar искуственное (глянь в исходники, код типа "детский сад", который дает мелкие сбои-глюки в каких-то частных случаях типа рассматриваемого, хотя сделано неплохо), в Win32 тулбар не имеет фокуса. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2015, 16:50 |
|
|
start [/forum/topic.php?fid=20&msg=38924087&tid=1401725]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 346ms |
total: | 470ms |
0 / 0 |