|
Кнопка с popup меню - пара вопросов
|
|||
---|---|---|---|
#18+
Есть обычная кнопка. Ей вызывается меню (сделанное на VB6) -растет от нижнего левого края кнопки. Проще привести недоработанный код Код: vbnet 1. 2. 3. 4. 5.
Надо по щелчку на кнопке: 1) чтоб если меню не выведено, то оно появлялось, если выведено - исчезало. 2) чтоб сама кнопка "визуально" не нажималась. Нечто подобное делает кнопка Параметры в любом классическом HTMLhelp. По п.1 могу сказать, что моя b_menu хороша только если стукать исключительно по кнопке. Если выбрать пункт меню, либо щелкнуть не по кнопке, то оно закроется а b_menu не сработает. WM_ENTERMENULOOP не уверен что что-то даст, потому что сначала "предыдущее" меню выйдет, а потом кнопка щелкнется По п.2 могу сказать, что _MouseDown вместо _Click практически устраняет визуальный эффект нажатия только если меню "появляется". При "исчезании" нажимается по полной. Кнопка нужна ОБЫЧНАЯ. Чтоб была такая же как соседние. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2014, 08:21 |
|
Кнопка с popup меню - пара вопросов
|
|||
---|---|---|---|
#18+
Дмитрий771) чтоб если меню не выведено, то оно появлялось, если выведено - исчезало. Чтоб не было визуального эффекта нажатия (вызывает его либо мышь, либо сенсорный экран), надо отменить WM_LBUTTONDOWN. При этом туда же надо писать код, который обычно пишется в Command_Click или Mouse_Down(Up), т.к. отмена WM_LBUTTONDOWN отменяет все стандартные события. Дмитрий772) чтоб сама кнопка "визуально" не нажималась. Надо разрешать выводить меню по новой не по WM_EXITMENULOOP, а по тику таймера, кот. запускается из WM_EXITMENULOOP. Все другие способы типа отслеживания координат мыши на момент WM_EXITMENULOOP не дают 100% гарантию. Пример: при выведенном меню нажали Enter/Esc а мышь была над кнопкой. Интервала таймера 1мс достаточно (и оптимально) для случая мыши. Но недостаточно для сенсора. Опытным путем установил, что 300мс вроде как оптимально (юзер вряд ли сделает 2 осмысленных щелчка мыши за меньший интервал, и сенсор вроде как тоже реагирует правильно если конечно не пытаться протереть экран пальцем). Но честно говоря глядючи на 11-дюймовый экран нетбука, и пытаясь попасть лапой в крошечные кнопки (которые на даже стареньком 19-дюймовом Sony кажутся неприлично огромными), начинаешь задумываться о приложениях Windows Store, причем в приоритете относительно освоения и переписывания существующего VB6 кода под классический (уже наверно) .Net (WinForms, да хоть бы и WPF), который по сути то ничего нового то и не даст. Собственно по теме, код и тестовый проект, если кому интересно поиграться. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.03.2014, 02:40 |
|
|
start [/forum/topic.php?fid=60&fpage=45&tid=2156471]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 134ms |
0 / 0 |