Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 23.07.2009, 10:52   #1
alxd
Пользователь
 
Регистрация: 02.07.2009
Сообщений: 77
Сообщение Совместная работа hook и PopupMenu (Delphi 7)

Может тема где и поднималась, но я не нашел, хотя и очень старался

Описание: Есть форма и библиотека dll, при создании формы вызывается процедура из библиотеки
Код:
SetHook;
(включается глобальный перехват нажатия средней кнопки мыши), при закрытии соответственно вызывается
Код:
UnHook;
. При нажатии средней кнопки мыши происходит создание PopupMenu c двумя пунктами.

Проблема: Если вызов всплывающего меню происходит в форме, и затем нажать ESC или щелкнуть мышью в каком-нибудь месте формы - меню пропадает, все хорошо , но вот если вызов щелчок средней кнопкой произошел за пределами формы - меню остается висеть, пока не сделать на нам Click (что не есть хорошо ).

Подскажите, как решить такую вот задачку.
Заранее благодарен!
Вложения
Тип файла: zip TestDLL.ZIP (205.1 Кб, 17 просмотров)
alxd вне форума
Старый 23.07.2009, 10:58   #2
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Можно отследить где произошел клик, если над формой то вызвать меню, если нет то выйти из процедуры.
psycho-coder вне форума
Старый 23.07.2009, 11:00   #3
alxd
Пользователь
 
Регистрация: 02.07.2009
Сообщений: 77
По умолчанию

Цитата:
Сообщение от psycho-coder Посмотреть сообщение
Можно отследить где произошел клик, если над формой то вызвать меню, если нет то выйти из процедуры.
Смысл как раз в том чтобы меню всплывало в обоих случаях. Осталось только научиться нормально "прятать" его
alxd вне форума
Старый 23.07.2009, 11:01   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну вот когда ты отловил нажатие вне меню просто разрушай его методом Free.
I'm learning to live...
Stilet вне форума
Старый 23.07.2009, 11:04   #5
alxd
Пользователь
 
Регистрация: 02.07.2009
Сообщений: 77
По умолчанию

Спасибо! Попробую сделать
alxd вне форума
Старый 23.07.2009, 11:18   #6
alxd
Пользователь
 
Регистрация: 02.07.2009
Сообщений: 77
По умолчанию

Что-то ничего не вышло Как вообще определить, произошел ли клик в меню или нет. Может есть другой способ?
alxd вне форума
Старый 24.07.2009, 07:21   #7
alxd
Пользователь
 
Регистрация: 02.07.2009
Сообщений: 77
По умолчанию

Ну кто-нибудь, подскажите! Очень надо!

Последний раз редактировалось alxd; 24.07.2009 в 08:50.
alxd вне форума
Старый 24.07.2009, 10:32   #8
alxd
Пользователь
 
Регистрация: 02.07.2009
Сообщений: 77
По умолчанию

Ура!!!! Задача решилась!!! Если кому интересно: перед посылкой сообщения форме в процедуре DLL поставил
Код:
SetForegroundWindow(ХендлОкна)
alxd вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi - ищу программиста, совместная работа Shadow_Wind Фриланс 19 14.03.2009 12:43
Совместная работа в группе. Серьезное предложение для Вас. Virtson Фриланс 35 21.01.2008 18:33
Совместная разработка программ Иван Свободное общение 39 27.02.2007 18:23
Совместная обработка ButtonClick ButtonMouseDown serg-abinsk Помощь студентам 3 13.12.2006 10:29