У меня есть окно без рамки, единственным дочерним элементом которого всегда является размер окна, является сторонний компонент. Этот компонент хочет иметь возможность уведомить меня, когда WM_MOUSEDOWN
произошел в определенных областях, которые по своему усмотрению, для перемещения или изменения размера окна (как если бы оно не было без границ). Он также хочет решить, какое событие использовать в вопросе.Как инициировать пользовательский переход или изменение размера пользовательских границ окна в Windows в окне без полей, когда событие приходит к ребенку?
Поскольку окно без полей и дочернее окно уже получили сообщение мыши, я не думаю, что смогу переопределить WM_NCHITTEST
, не так ли? (Или, другими словами, делает родительское окно всегда получают WM_NCHITTEST
, прежде чем мой ребенок получает WM_LBUTTONDOWN
? Или только при первой активации/во время захвата?)
GTK + используется для вызова DefWindowProc()
с WM_NCLBUTTONDOWN
вручную запустить этот модальный цикл событий. Это способ сделать это?
Что относительно SC_MOVE
в WM_SYSCOMMAND
? Это только для управляемых клавиатурой оконных движений и изменения размеров, а не для мыши?
Или мне это нужно сделать вручную? Я знаю, что это модальный цикл, который использует одну из констант фильтра сообщений, и я знаю, что Aero Snap нужно будет делать вручную, по крайней мере.
Мне нужно сделать это на Windows Vista или выше.
Спасибо.
Так что мой единственный вариант - использовать 'WM_NCHITTEST' в любом случае? Я только спрашиваю, потому что сейчас сигнал для перетаскивания заново документируется для отправки во время обработчика 'WM_LBUTTONDOWN'; Однако я могу изменить API без проблем. Будет ли трюк с низким битом работать с 'SC_SIZE'? – andlabs
'WMNCHITTEST' не ваш * только * вариант. И да, 'SC_SIZE' имеет подобный трюк с небольшими битками. Я обновил свой ответ. –
Прохладный, спасибо. И только для полноты стандартным способом, будет ли когда-нибудь ситуация, когда подклассификация дочернего 'WM_NCHITTEST' будет недостаточной? – andlabs