|
TrackPopupMenu
|
|||
---|---|---|---|
#18+
Здравствуйте. Скажите как определить какая команда была выбрана в контекстном меню, у меня все время возвращает функция единицу. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8.
Код: vbnet 1. 2. 3. 4. 5. 6. 7.
Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
По нажатию кнопки появляется меню, выбираю пункт, а i всегда 1 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2019, 18:17 |
|
TrackPopupMenu
|
|||
---|---|---|---|
#18+
Прочитав кучу статей , понял что нужно делать субклассирование. К примеру , если я объявлю функцию для обработки сообщений формы (ну естественно через функцию SetwindowLong и AddresOf укажу что именно эта функция будет обрабатывать сообщения), как мне узнать какая команда была выбрана, вернее насколько помню она содержится в параметре wparam , то ли в старшем байте, то ли в младшем). Какими функциями ее выделить. И если например на ту или иную команду открывается та или иная форма, это открытие формы описывать тут же, в WindowProc? Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2019, 19:49 |
|
TrackPopupMenu
|
|||
---|---|---|---|
#18+
Damir_85Прочитав кучу статей , понял что нужно делать субклассирование. Ничего там не надо, много лишнего лепишь. На рабочий код, и разбирайся сам что у тебя не так. И не разбрасывай переменные по разным процедурам. Код формы: Код: 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.
Код модуля: Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2019, 18:58 |
|
TrackPopupMenu
|
|||
---|---|---|---|
#18+
Чет с русским беда, когда из старой студии сюда копируешь. Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2019, 19:05 |
|
TrackPopupMenu
|
|||
---|---|---|---|
#18+
Вообще, если честно непонятно зачем тебе API, в VB6 все это через свой конструктор делается, а контекстное меню помнится своей функцией вызывается (делается в том же конструкторе). API и "субклассирование" нужны тогда, когда надо сделать что-то хитрое, например добавить картинки в меню (а для этого на XP надо еще менять высоту итемов), или например надо знать по какому итему елозит мышка, чтоб отображать подсказки в StatusBar. При этом заметь сам скелет меню можно и проще делать в том же конструкторе. А если просто стандартные классические меню без картинок, то API тебе не нужны. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2019, 00:31 |
|
TrackPopupMenu
|
|||
---|---|---|---|
#18+
Дмитрий77, Спасибо. Дело втом , что я на VBA пишу, под Corel Draw. Там также как, например, в Excel если писать макрос, минимум компонентов, и меню нету ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2019, 09:11 |
|
TrackPopupMenu
|
|||
---|---|---|---|
#18+
Кстати , а если картинку для каждого пункта контекстного меню ставить, это уже через API , т.е сложно? И маленький вопрос, в контекстном меню можно ли блокировать некоторые команды , а то что то писал MF_GRAYED и MF_DISABLED что то не блокировалось ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2019, 09:13 |
|
TrackPopupMenu
|
|||
---|---|---|---|
#18+
Damir_85, Вообще чтоб сделать хорошо и красиво попотеть придется, не день и не два. А вообще иконки в VB6 меню тяжело добавить? Там куски кода и готовые тест-проекты вложены. Поиск по моим топикам еще можешь сделать. Я в этом давно копался, напрягаться чтоб давать ответы на конкретные вопросы неохота. С VBA не работал, у меня все это в .Net давно перенесено, можешь еще в разделе .Net по моим топикам поискать, суть внедрения API та же. Методология для XP и Висты сильно отличается, для Висты проще. Для Win10/8.1/7 также как для Висты. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2019, 13:43 |
|
TrackPopupMenu
|
|||
---|---|---|---|
#18+
Теперь заработало. Ошибка была в том, что не объявил значение константы TPM_RETURNCMD Только у меня не по нажатию кнопки мыши работает , а по нажатию кнопки на форме Код: 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.
Хотел спросить, а почему ClientToScreen некоректно работает в VBA. Меню должно появляться под левым нижним углом кнопки, а оно по высоте появляется где то по верхнему краю кнопки, и сдвинуто от левого верхнего угла кнопки влево приблизительно на расстояние, которое отведено в меню для пиктограмм для пунктов меню. Я же вот прописал: Код: vbnet 1. 2.
Да и выравнивание меню по x и y по умолчанию левый верхний угол для TrackPopuMenu Я пробовал использовать GetWindowRect, так Rect.Left и Rect.Top вообще уводят меню ниже формы и вбок ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2019, 19:31 |
|
TrackPopupMenu
|
|||
---|---|---|---|
#18+
Damir_85 Меню должно появляться под левым нижним углом кнопки В .NET так делаю Код: vbnet 1. 2. 3. 4.
В vb6 не делал, сам пробуй. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2019, 02:18 |
|
TrackPopupMenu
|
|||
---|---|---|---|
#18+
кстати , нашел вот такую штуку, незнаю может название команды не правильно напишу, но пишется так. Код: vbnet 1. 2.
Про перевод пикселей в твипы и наоборот немного прочитал, т.к в vba нету Screen. Для чего делить на твипы? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2019, 19:02 |
|
TrackPopupMenu
|
|||
---|---|---|---|
#18+
Damir_85, для того, что у контролов vb координаты в твипах, а координаты GDI - в пикселях. однако, координаты в VBA тоже в пикселях, поэтому Screen не нужен. автор Ошибка была в том, что не объявил значение константыв настройках редактора vba есть галочка "требовать объявления переменных", она во все модули option explicit прописывает, что исключает такие детские, но иногда сложно уловимые ошибки. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2019, 00:04 |
|
|
start [/forum/topic.php?fid=60&msg=39885421&tid=2154863]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 140ms |
0 / 0 |