Как узнать хендл контрола под курсором?
Есть форма, на форме несколько контролов. Как узнать хендл контрола под курсором или просто по точке(а точку положения курсора получить несложно)?
|
Код:
POINT pt;
HWND result = (GetCursorPos(&pt) ? WindowFromPoint(&pt) : 0);
|
Хм, чето данный пример не возвращает хендл кнопки, хотя хендл самого окна возвращает нормально...
|
Тогда так:
Код:
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, которая перебирает вообще все окна, среди которых можно выбрать те, которые содержат точку
|
pva, извините, но я ошибся, первый вариант тоже мог быть рабочим, просто дело в том, что WM_MOUSEMOVE над кнопкой посылает сообщения в кнопку, а не в окно, потому то и не работал ваш код.
|
Время: 16:21.
© OSzone.net 2001-