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