|
|
|
Блокировка всплывающего меню
|
|||
|---|---|---|---|
|
#18+
нужно сделать сабж для простого edit'a в win32 проекте, какое сообщение отлавливать ума не приложу? please help спасибо -------------------------------------------------------------- [подпись с другого сайта] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2007, 23:06 |
|
||
|
Блокировка всплывающего меню
|
|||
|---|---|---|---|
|
#18+
up -------------------------------------------------------------- [подпись с другого сайта] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2007, 21:15 |
|
||
|
Блокировка всплывающего меню
|
|||
|---|---|---|---|
|
#18+
Возможно WM_RBUTTONDOWN ON_WM_RBUTTONDOWN() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2007, 17:43 |
|
||
|
Блокировка всплывающего меню
|
|||
|---|---|---|---|
|
#18+
Хотя ещё один метод вызова меню остётся - спец клавиша на Правлильных клавиатурах. Та что рядом с VK_LWIN, VK_RWIN. Но её пожно отловить по НАЖАТИЕ КЛАВИШИ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2007, 17:48 |
|
||
|
Блокировка всплывающего меню
|
|||
|---|---|---|---|
|
#18+
эти сообщения можно разруливать когда у вас есть класс производный от CEdit (у меня есть такой опыт), я же работаю с Win32API -------------------------------------------------------------- [подпись с другого сайта] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2007, 22:11 |
|
||
|
Блокировка всплывающего меню
|
|||
|---|---|---|---|
|
#18+
решил разрулить проблему с помощью subclassing'a так как описано в MSDN в статье Safe Subclassing In Win32, окно создается но обработка сообщений идет почему-то мимо нужного "обработчика" Код: plaintext 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. ? -------------------------------------------------------------- [подпись с другого сайта] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2007, 09:26 |
|
||
|
Блокировка всплывающего меню
|
|||
|---|---|---|---|
|
#18+
Cerebrumрешил разрулить проблему с помощью subclassing'a так как описано в MSDN в статье Safe Subclassing In Win32, окно создается но обработка сообщений идет почему-то мимо нужного "обработчика" Код: plaintext 1. 2. ? -------------------------------------------------------------- [подпись с другого сайта] В справке сказано: Calling SetClassLong with the GCL_WNDPROC index creates a subclass of the window class that affects all windows subsequently created with the class. An application can subclass a system class, but should not subclass a window class created by another process. Т.е. как я понял - влияет на окна, созданные ПОСЛЕ вызова SetClassLong... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2007, 14:27 |
|
||
|
Блокировка всплывающего меню
|
|||
|---|---|---|---|
|
#18+
Привет! глянь еще раз на пример в справке, точнее на очередность вызыва SetClassLong там требуется хэндл только что созданного окна! -------------------------------------------------------------- [подпись с другого сайта] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2007, 15:44 |
|
||
|
Блокировка всплывающего меню
|
|||
|---|---|---|---|
|
#18+
CerebrumПривет! Привет, рад "слышать" :). Cerebrum глянь еще раз на пример в справке, точнее на очередность вызыва SetClassLong там требуется хэндл только что созданного окна! -------------------------------------------------------------- [подпись с другого сайта] Ещё там сказано, что префикс не GWL_ а GCL_ DWORD SetClassLong( HWND hWnd, int nIndex, LONG dwNewLong ); ... GCL_WNDPROC Replaces the address of the window procedure associated with the class. Лично у меня GWL_WNDPROC == -4, а GCL_WNDPROC == -24 ;... :) Может, потому и не пашет? ЗЫ. Ещё рекомендуют SetClassLongPtr дабы обеспечить совместимость с x64 версиями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2007, 16:47 |
|
||
|
Блокировка всплывающего меню
|
|||
|---|---|---|---|
|
#18+
GWL_ - это instance subclassing GCL_ - это global subclassing один черт ни так ни сяк не работает видимо придеться хучить... -------------------------------------------------------------- [подпись с другого сайта] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2007, 17:06 |
|
||
|
Блокировка всплывающего меню
|
|||
|---|---|---|---|
|
#18+
CerebrumGWL_ - это instance subclassing GCL_ - это global subclassing один черт ни так ни сяк не работает видимо придеться хучить... -------------------------------------------------------------- [подпись с другого сайта] Отлично сабклассинг работает. Только там есть одна интересная вещь. В случае ошибки, вместо старой процедуры возвращается ноль. Что конкретно случилось, можно узнать, сделав, например, вот так: Код: plaintext 1. 2. 3. 4. 5. 6. В случае с SetClassLong процедура все-таки (опытным путем проверил) меняется для всех окон созаднных ПОСЛЕ вызова SetClassLong. Т.е. для окна, переданного в SetClassLong оконная процедура не меняется. Её нужно менять при помощи SetWindowLong(..GWL_WNDPROC..) Вот рабочий листинг программы с использованием SetClassLong: Код: plaintext 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. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2007, 22:28 |
|
||
|
Блокировка всплывающего меню
|
|||
|---|---|---|---|
|
#18+
Кстати, меню отлично блокируется вот такой оконной процедурой: Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2007, 22:34 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34371486&tid=2029324]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
161ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
| others: | 241ms |
| total: | 509ms |

| 0 / 0 |
