Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] Как узнать хендл контрола под курсором?

Ответить
Настройки темы
C/C++ - [решено] Как узнать хендл контрола под курсором?

Аватара для crashtuak

Старожил


Сообщения: 467
Благодарности: 25


Конфигурация

Профиль | Отправить PM | Цитировать


Есть форма, на форме несколько контролов. Как узнать хендл контрола под курсором или просто по точке(а точку положения курсора получить несложно)?

-------
Мне надо не так много "Полезных сообщений", чтоб сровнять их количество с моими постами :).


Отправлено: 09:51, 31-01-2010

 
pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
POINT pt;
HWND result = (GetCursorPos(&pt) ? WindowFromPoint(&pt) : 0);
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:50, 31-01-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для crashtuak

Старожил


Сообщения: 467
Благодарности: 25

Профиль | Отправить PM | Цитировать


Хм, чето данный пример не возвращает хендл кнопки, хотя хендл самого окна возвращает нормально...

-------
Мне надо не так много "Полезных сообщений", чтоб сровнять их количество с моими постами :).


Отправлено: 13:15, 31-01-2010 | #3

pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


Тогда так:
Код: Выделить весь код
HWND result = 0;
POINT pt;
HWND parent = (GetCursorPos(&pt) ? WindowFromPoint(&pt) : 0);
if (parent)
{
  MapWindowPoints(0, parent, &pt, 1);
  result = ChildWindowFromPoint(parent, &pt);
}
ещё есть функция ChildWindowFromPointEx, которая может искать и невидимые окна, но в порядке Z-order
а ещё EnumChildWindows, которая перебирает вообще все окна, среди которых можно выбрать те, которые содержат точку
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:41, 31-01-2010 | #4


Аватара для crashtuak

Старожил


Сообщения: 467
Благодарности: 25

Профиль | Отправить PM | Цитировать


pva, извините, но я ошибся, первый вариант тоже мог быть рабочим, просто дело в том, что WM_MOUSEMOVE над кнопкой посылает сообщения в кнопку, а не в окно, потому то и не работал ваш код.

-------
Мне надо не так много "Полезных сообщений", чтоб сровнять их количество с моими постами :).


Отправлено: 20:29, 31-01-2010 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] Как узнать хендл контрола под курсором?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
C/C++ - [решено] Изменение положения контрола crashtuak Программирование и базы данных 2 31-12-2009 16:08
Разное - Проблема с курсором мыши. Farman Программное обеспечение Windows 1 29-07-2008 02:10
выделять елементы (DIV ) с помощью шифта / контрола и мышки Vlad Drakula Вебмастеру 7 25-07-2006 15:18
Получить текст под курсором wolfaleks Программирование и базы данных 4 17-05-2005 13:36
Как получить HWND окна под курсором? rootKit Программирование и базы данных 1 18-04-2005 17:48




 
Переход