![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Над контролом ли мышь? (API only)
Б. Гейтс © (2007-11-13 21:45:00)Ребята, мне нужно ловить момент, когда мышь покидает или приходит к контролу, который был создан CreateWindowEx'ом. (что-то типа вроде похоже на OnMouseOverи OnMouseOut).
Пишу на чистом апи, поэтому могу использовать только его.
Не нашел ничего, кроме wm_mousemove. Че мне делать, а?
Заранее респект за ответы
SergeyIT (2007-11-14 22:03:00) [1]Так если Hook, как в примере, использовать - все можно получить.
Б. Гейтс (2007-11-14 20:39:00) [2]И еще вопрос.
Вот допустим отправили контролу сообщение WM_LBUTTONDOWN.
Потом, не отпуская кнопку мыши, отправили еще сообщение WM_MOUSELEAVE. И отпустили кнопку мыши за пределамиконтрола. А мой контрол сообщение WM_LBUTTONUP так и не получил. Как его получить?
Б. Гейтс (2007-11-14 20:28:00) [3]Будет ли это разумно, если я поставлю вместо
ev.dwHowerTime := HOVER_DEFAULT
вот это:
ev.dwHowerTime := 1
Если писать так, то никакого опоздания при WM_MOUSEHOVER нет. Не будет ли это подтормаживать систему?
SergeyIT (2007-11-14 18:27:00) [4]> Огромное спасибо!
Пожалуйста
Б. Гейтс (2007-11-14 18:14:00) [5]SergeyIT
Огромное спасибо! Разобрался, теперь все работает!
Обошелся без хуков
ev.dwFlags := TME_LEAVE or TME_HOVER
Можно закрывать ветку
Сергей М. (2007-11-14 17:24:00) [6]А какая разница, в русском или в нерусском ?
Смысл-то один и тот же, это же не стихи)
Б. Гейтс (2007-11-14 17:23:00) [7]SergeyIT
ОК принял, огромное спасибо! Буду пока сейчас разбираться сидеть, если не получится - скажу
> А то в английском справочнике нету
Там было, я хотел написать "в русском справочнике", но мысли сбились
Denis__ (2007-11-14 17:11:00) [8]
> Б. Гейтс (14.11.07 17:00) [13]
Так Сергей М. дал тебе, то что ты хотел! Теперь или
Игорь Шевченко © (14.11.07 15:13) [5]
или
Johnmen © (14.11.07 15:29) [7]
SergeyIT (2007-11-14 17:10:00) [9]Отправил
Б. Гейтс (2007-11-14 17:00:00) [10]ildarsv@mail.ru
Буду очень благодарен!
Сергей М. (2007-11-14 16:53:00) [11]
> А то в английском справочнике нету
Врешь и не краснеешь)
The TrackMouseEvent function posts messages when the mouse pointer leaves a window or hovers over a window for a specified amount of time.
BOOL TrackMouseEvent(
LPTRACKMOUSEEVENT lpEventTrack // pointer to a TRACKMOUSEEVENT structure
);
Parameters
lpEventTrack
Pointer to a TRACKMOUSEEVENT structure.
Return Values
If the function succeeds, the return value is nonzero .
If the function fails, return value is zero. To get extended error information, call GetLastError.
The messages that the function can post are the following:
Message Meaning
WM_MOUSEHOVER The mouse hovered over the client area of the window for the period of time specified in a prior call to TrackMouseEvent. Hover tracking stops when this message is generated. The application must call TrackMouseEvent again if it requires further tracking of mouse hover behavior.
WM_MOUSELEAVE The mouse left the client area of the window specified in a prior call to TrackMouseEvent. All tracking requested by TrackMouseEvent is canceled when this message is generated. The application must call TrackMouseEvent when the mouse re-enters its window if it requires further tracking of mouse hover behavior.
Remarks
The mouse pointer is considered to be hovering when it stays within a specified rectangle for a specified period of time. Call SystemParametersInfo and use the values SPI_GETMOUSEHOVERWIDTH, SPI_GETMOUSEHOVERHEIGHT, and SPI_GETMOUSEHOVERTIME to retrieve the size of the rectangle and the time.
See Also
SystemParametersInfo, TRACKMOUSEEVENT
SergeyIT (2007-11-14 16:32:00) [12]> > профессионалам отдельная просьба - быть снисходительными
Куда прислать? - давайте майл
Б. Гейтс (2007-11-14 15:48:00) [13]
> профессионалам отдельная просьба - быть снисходительными
Johnmen (2007-11-14 15:35:00) [14]
> Никто не может сюда записать пример?
Да.
Б. Гейтс (2007-11-14 15:33:00) [15]
> Корректно.
Так и сделаю.
Никто не может сюда записать пример? А то в английском справочнике нету, а работать с этим не могу
Johnmen (2007-11-14 15:29:00) [16]
> А как надо с этим работать?
Корректно.
Б. Гейтс (2007-11-14 15:24:00) [17]
> Пиво пить
Ответь на вот этот вопрос: А как надо с этим работать?
Игорь Шевченко (2007-11-14 15:13:00) [18]
> Че мне делать, а?
Пиво пить
Б. Гейтс (2007-11-14 15:06:00) [19]
> TrackMouseEvent
Спасибо за ответ!
А как надо с этим работать? (API знаю 3 месяца, а в справочнике нету)
Германн (2007-11-14 01:20:00) [20]
> к контролу, который был создан CreateWindowEx'ом
И Винда маздай и Б. Гейтс (13.11.07 21:45) ни чем не лучше.
:)