WM_SIZE: размер изменен пользователем?
Возможно ли в обработчике сообщений Windows для WM_SIZE определить, вызвано ли текущее изменение размера действием пользователя (например, изменение размера мышью или через системное меню + клавиатура)?
(В настоящее время я устанавливаю / сбрасываю флаг, если изменение размера происходит "из-за моего кода", но в некоторых случаях это довольно громоздко)
[править] вариант использования:
Цель состоит в том, чтобы отличить "наборы размеров пользователя" от изменений размера, вызванных другими операциями (также контролируемыми пользователем).
В этом конкретном случае у меня есть элемент управления листом свойств, где каждая страница имеет различный минимальный размер / размер по умолчанию.
Ожидаемое поведение пользователя выглядит следующим образом:
- минимальный размер листа не меньше, чем требуется для текущей страницы (т.е. он меняется при изменении страницы)
- если пользователь изменяет размер листа до "как можно меньшего размера", а затем переключается на другую страницу, его размер также должен быть "настолько мал, насколько возможно для этой страницы".
(неофициальное тестирование юзабилити первого уровня - то есть я играю с ним - показало, что этот "использовать наименьший размер" лучше отслеживать отдельно для X и Y)
Да, это приводит к скачкам размера листа при изменении страницы. Это неудачно, но лучше, чем альтернативы в этом конкретном приложении.
В этом случае док-станция Aero не поддерживается для этого ветра, поскольку она не верхнего уровня.
FWIW, наличие сообщений об изменениях всегда последовательно для всех элементов управления и наличие индикатора, если это было вызвано действием пользователя или программно занимает довольно высокое место в моем списке "существенных для API управления пользовательским интерфейсом".