powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / События мыши в VB.NET
6 сообщений из 6, страница 1 из 1
События мыши в VB.NET
    #32913306
Ibavr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите пожалуста!
Как отслеживать события мыши (шелчек, прокрутка мыши) на дисплее вообще...
Легко сделать подобное если использовать событие "MouseDown" (и т.п.) контрола, над которым находится курсор. А как узнать над каким контролом курсор находится в данный момент, как отслежиавть события, если курсор покинул форму?
Зарание благодарен.
...
Рейтинг: 0 / 0
События мыши в VB.NET
    #32913346
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в любой момент положение курсора мыши можно узнать через Cursor.Position - это screen координаты. их можно пересчитать в координаты клиентской области формы через Me.PointToClient() метод. см. также метод GetChildAtPoint.

сделать полный трек мышиных событий для формы можно с использованием
Application.AddMessageFilter(Me) - при загрузке формы и Application.RemoveMessageFilter(Me) - при выгрузке. причем форма должна наследоваться от IMessageFilter интерфеса - это один метод - PreFilterMessage, который получает все события. в этом методе нужно ловить WM_MOUSEMOVE и пр., что тебя интересут. в этом случае узнать контрол, над которым стоит указатель мыши можно через стат. методControl.FromHandle(message.HWnd) - работает только для managed контролов.
...
Рейтинг: 0 / 0
События мыши в VB.NET
    #32913370
Ibavr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за отзыв!
Направление ясно. Только совладать с IMessageFilter не получается. При наследовании (Inherits) VB.NET указывает на ошибку - "... can ... from other classes".
Растолкуй, пожалуйста, как именно реализовывать данный метод. Если не затруднит, пару строчек примера.
...
Рейтинг: 0 / 0
События мыши в VB.NET
    #32913374
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
используй Implements IMessageFilter


пример (на C#, другого нет под рукой) вывод в панели StatusBar формы:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
public bool PreFilterMessage(ref Message m)
{
 Control ctl=Control.FromHandle(m.HWnd);
 this.statusBarPanel1.Text=(ctl==null) ? "***" : ctl.Name;
			
  if(m.Msg==0x0200) // WM_MOUSEMOVE ?
  {
    int X=(int)m.LParam & 0x0000FFFF;
    int Y=((int)m.LParam)>>16 & 0x0000FFFF;
    this.statusBarPanel2.Text=X.ToString();
    this.statusBarPanel3.Text=Y.ToString();
  }
  return false;
}
...
Рейтинг: 0 / 0
События мыши в VB.NET
    #32913375
Ibavr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Благодарю! Ж))
...
Рейтинг: 0 / 0
События мыши в VB.NET
    #32913378
Ibavr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Благодарю! Ж))
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / События мыши в VB.NET
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]