У меня есть решение, которое работает для меня. Вот мои шаги для воспроизведения
1. WM_NCHITTEST
Подписаться на WM_NCHITTEST. Теперь вам нужно обработать сообщение и вернуть результат вашего теста.
Это может помочь вам: http://msdn.microsoft.com/en-us/library/windows/desktop/ms645618(v=vs.85).aspx
Для меня я создал несколько областей в моей форме.
TopLeft, Top, TopRight, подпись, влево, вправо, BottomLeft, BottomRight, BottomRight, MinButton, MaxButton, CloseButton
Каждый из них представляет собой Прямоугольник, определяющий область в моей форме. Я просто проверяю, находится ли курсор мыши в одной из этих областей, и возвращаю правильный HT-CODE.
2. WM_NCLBUTTONDOWN
Теперь подпишитесь на WM_NCLBUTTONDOWN. Проверьте WPARAM для значения NCHITTEST, которое вы хотите обработать. Для проверки кнопки свертывания для HTMINBUTTON (0x0008)
Но здесь я просто возвращаю IntPtr.Zero в результате. Это указывало на то, что я обработал сообщение.
3. WM_NCLBUTTONUP
После этого подпишитесь на WM_NCLBUTTONUP. Проверьте WPARAM на целевое значение NCHITTEST и делайте то, что здесь, что хотите.
Я выложу свой источник позже!