Добрый день,коллеги программисты!
Подскажите пожалуйста, имеется окно, которое таскается за любую часть, мне нужно запретить перетаскивать окно, к примеру, если курсор по y > 20,то есть таскать я должен уметь только за верхнюю часть. Как это реализовать, не могу понять и разобраться
Здравствуйте, arfaa, Вы писали:
A>Добрый день,коллеги программисты!
A>Подскажите пожалуйста, имеется окно, которое таскается за любую часть, мне нужно запретить перетаскивать окно, к примеру, если курсор по y > 20,то есть таскать я должен уметь только за верхнюю часть. Как это реализовать, не могу понять и разобраться
Насколько я помню, такая фишка (таскание окна за любую часть) реализуется как обработка сообщения WM_NCHITTEST и возврат HTCAPTION, то есть что бы винда думала, что клик происходит на заголовке.
Ну соответственно, в обработчике проверяй ограничения для Y и возвращай HT_CAPTION только когда нужно, в противном случае результат DefWindowProc
Координаты x и y получаются так:
xPos = GET_X_LPARAM(lParam);
yPos = GET_Y_LPARAM(lParam);
Здравствуйте, arfaa, Вы писали:
A>Добрый день,коллеги программисты!
A>, мне нужно запретить перетаскивать окно, к примеру, если курсор по y > 20,то есть таскать я должен уметь только за верхнюю часть. Как это реализовать, не могу понять и разобраться
Обрабатывать сообщение
WM_WINDOWPOSCHANGING, и в случае если вышло за границы изменять координаты в WINDOWPOS (указатель будет в LPARAM).
Если нужно только X,Y координаты окна менять, то можно посмотреть в сторону сообщения
WM_GETMINMAXINFO