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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 25.01.2008, 09:48   #11
JoanM
Дешево пишу проги)
Форумчанин Подтвердите свой е-майл
 
Аватар для JoanM
 
Регистрация: 12.12.2006
Сообщений: 106
По умолчанию

Видимо хендл окна он не берёт, когда мышка на кнопке или другом компоненте.
JoanM вне форума
Старый 25.01.2008, 09:53   #12
JoanM
Дешево пишу проги)
Форумчанин Подтвердите свой е-майл
 
Аватар для JoanM
 
Регистрация: 12.12.2006
Сообщений: 106
По умолчанию

ВОВАН13 - Вообще-то оригинальная идея насчёт кода для таймера, но он Censored моё окно туда-сюда (стоят таймеры на плавное разворачивание/сворачивание).

Последний раз редактировалось Stilet; 25.01.2008 в 09:56.
JoanM вне форума
Старый 25.01.2008, 09:54   #13
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А что очень быстро нужно?
Кому это нужно то?
I'm learning to live...
Stilet вне форума
Старый 25.01.2008, 10:00   #14
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Вот выдумываете, WindowFromPoint, таймеры...
Код:
LRESULT WND_WM_NCMOUSEMOVE(HWND hWnd, WPARAM wParam, LPARAM lParam)
{
	TRACKMOUSEEVENT tme;

	tme.cbSize = sizeof(TRACKMOUSEEVENT);
	tme.dwFlags = TME_NONCLIENT | TME_LEAVE;
	tme.dwHoverTime = HOVER_DEFAULT;
	tme.hwndTrack = hWnd;
	_TrackMouseEvent(&tme);

	return 0;
}

LRESULT WND_WM_MOUSEMOVE(HWND hWnd, WPARAM wParam, LPARAM lParam)
{
	TRACKMOUSEEVENT tme;

	tme.cbSize = sizeof(TRACKMOUSEEVENT);
	tme.dwFlags = TME_LEAVE;
	tme.dwHoverTime = HOVER_DEFAULT;
	tme.hwndTrack = hWnd;
	_TrackMouseEvent(&tme);

	return 0;
}
B_N вне форума
Старый 25.01.2008, 10:06   #15
JoanM
Дешево пишу проги)
Форумчанин Подтвердите свой е-майл
 
Аватар для JoanM
 
Регистрация: 12.12.2006
Сообщений: 106
По умолчанию

Не понял, этот код где валяться должен?
В таймере?
Или сам по себе, как процедура?
Может быть в MouseMove?
JoanM вне форума
Старый 25.01.2008, 10:12   #16
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

В обработчике WM_MOUSEMOVE и(или) при желании WM_NCMOUSEMOVE, я же написал на первой странице. TrackMouseEvent, при выходе курсора за пределы окна (и если надо, при "зависании" курсора на одном месте в течение времени tme.dwHoverTime) через PostMessage отправляет WM_NCMOUSEHOVER, WM_NCMOUSELEAVE, WM_MOUSEHOVER, WM_MOUSELEAVE соответственно. Нужное окно указывается в tme.hwndTrack. Остается их "в нем" обработать.
http://msdn2.microsoft.com/en-us/library/ms646265.aspx

Добавлю еще. На самом деле неважно, где вызывать TrackMouseEvent, хоть в OnCreate, но она "работает" один раз - после отправки того, что мы от нее хотели, больше ничего посылать не будет, поэтому ее вызов и ставится в то единственное "место", которое может приводить к выходу мышки за окно - в обработку ее движений. Плюсы очевидны - не создается никаких ненужных действий, когда уведомление не нужно, скажем после того, как курсор из окна ушел.

Последний раз редактировалось B_N; 25.01.2008 в 10:20.
B_N вне форума
Старый 25.01.2008, 10:27   #17
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Интересно а если на окне куча компонентов будут ли приходить эти сообщения ?
BOBAH13 вне форума
Старый 25.01.2008, 10:29   #18
JoanM
Дешево пишу проги)
Форумчанин Подтвердите свой е-майл
 
Аватар для JoanM
 
Регистрация: 12.12.2006
Сообщений: 106
По умолчанию

Цитата:
Сообщение от B_N Посмотреть сообщение
В обработчике WM_MOUSEMOVE и(или) при желании WM_NCMOUSEMOVE, я же написал на первой странице.
WM_MOUSEMOVE - это уже другая функция, и она, по-моему, уже отвечает за действия мышью. Ты меня немного запутал. Можешь цельный код программы написать?
JoanM вне форума
Старый 25.01.2008, 10:30   #19
JoanM
Дешево пишу проги)
Форумчанин Подтвердите свой е-майл
 
Аватар для JoanM
 
Регистрация: 12.12.2006
Сообщений: 106
По умолчанию

Цитата:
Интересно а если на окне куча компонентов будут ли приходить эти сообщения ?
И я о том же...
JoanM вне форума
Старый 25.01.2008, 10:49   #20
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от BOBAH13 Посмотреть сообщение
Интересно а если на окне куча компонентов будут ли приходить эти сообщения ?
Какая разница, сколько там компонентов?

Цитата:
WM_MOUSEMOVE - это уже другая функция
WM_MOUSEMOVE - это не функция, а сообщение
B_N вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Mouse самовольничает! Altera Компьютерное железо 13 06.04.2008 19:26
TService+TForm Viteef Общие вопросы Delphi 0 25.02.2008 08:13
Что означает TForm1 = class(TForm)>/STRONG> metamfetamin Помощь студентам 6 11.11.2007 22:40