Как программно запустить анимацию максимизации?

Я использую Qt/C++, и мое главное окно — это безрамочное окно. Поэтому я должен сам обрабатывать все события перемещения/изменения размера. Однако есть одна визуальная подсказка, которую я не знаю, как вызвать, когда пользователь перетаскивает верхнюю часть окна в верхнюю часть экрана, чтобы развернуть его.
В Windows это запускает анимацию синей волны, которая сообщает пользователю это будет максимально. Но такая визуальная подсказка не возникает автоматически с моим безрамочным окном.
Как я могу вызвать это программно? Или есть настройка, которая позволяет мне иметь это автоматически?


person Robin Lobel    schedule 13.03.2018    source источник
comment
Я предполагаю здесь, но; Я предполагаю, что это функция оконного менеджера, которая не контролируется вашими приложениями.   -  person Jesper Juhl    schedule 13.03.2018
comment
Можно преследовать HWND, собственный дескриптор окна из ОС, как здесь .. чтобы увидеть возможность передать его в нативную библиотеку, которая может обрабатывать дальнейшие требования .. только предположение.   -  person Mohammad Kanan    schedule 13.03.2018
comment
Я должен сам обрабатывать все события перемещения/изменения размера — вы этого не сделаете. Просто обработайте WM_NCHITTEST. чтобы сообщить оконному менеджеру, какие части вашего бескаркасного окна соответствуют строке заголовка и границе изменения размера, и он выполнит фактическое перемещение, изменение размера и максимизацию/восстановление для вас. Думаю, в этом случае вы увидите тот же волновой эффект, что и на окне со стандартной рамой.   -  person zett42    schedule 13.03.2018
comment
Хотелось бы найти простое решение (обработка WM_NCHITTEST), но я уже пробовал (используя этот подход, сообщает об ошибках .qt.io/browse/QTBUG-40578 ), и пока мое окно Qt не использует OpenGL, оно работает, но как только оно использует OpenGL, макет полностью испорчен только из-за этого :/ Поэтому я отступаю от необходимости обрабатывать каждый стандартный случай самостоятельно.   -  person Robin Lobel    schedule 14.03.2018