Игнорировать HWND из WindowFromPoint()
Я создаю систему стыкуемых окон в Win32 C++. Чтобы в реальном времени получать информацию о том, куда вы перетаскиваете новое окно, я создал специальное окно отладки, которое появляется только во время перетаскивания и показывает, где оно будет пристыковано. Чтобы узнать, какая панель будет пристыкована, мне нужно учесть перекрывающиеся окна и найти самые верхние. Для этого я вызываю WindowFromPoint(x, y), который находит HWND непосредственно под мышью. Это вызывает проблему, потому что когда отображается окно отладки, оно перехватывается WindowFromPoint, я хотел бы игнорировать его. Я приложил картинку.
Если у кого-то есть альтернативные предложения по этому плану, я буду рад его услышать. Я думал о том, чтобы сохранить какой-то список порядка окон и отслеживать каждый раз, когда новое окно фокусируется, но это тоже большая головная боль...
1 ответ
Ладно, я понял! У меня была правильная идея, но я не понял, что глобальное решение возврата 0 было плохой идеей в оконной процедуре. Вот верное возвращение:
case WM_NCHITTEST:
return HTTRANSPARENT;
Благодаря этой теме: Найти все окна под точкой