WM_SIZE: размер изменен пользователем?

Возможно ли в обработчике сообщений Windows для WM_SIZE определить, вызвано ли текущее изменение размера действием пользователя (например, изменение размера мышью или через системное меню + клавиатура)?

(В настоящее время я устанавливаю / сбрасываю флаг, если изменение размера происходит "из-за моего кода", но в некоторых случаях это довольно громоздко)


[править] вариант использования:
Цель состоит в том, чтобы отличить "наборы размеров пользователя" от изменений размера, вызванных другими операциями (также контролируемыми пользователем).

В этом конкретном случае у меня есть элемент управления листом свойств, где каждая страница имеет различный минимальный размер / размер по умолчанию.

Ожидаемое поведение пользователя выглядит следующим образом:

  • минимальный размер листа не меньше, чем требуется для текущей страницы (т.е. он меняется при изменении страницы)
  • если пользователь изменяет размер листа до "как можно меньшего размера", а затем переключается на другую страницу, его размер также должен быть "настолько мал, насколько возможно для этой страницы".

(неофициальное тестирование юзабилити первого уровня - то есть я играю с ним - показало, что этот "использовать наименьший размер" лучше отслеживать отдельно для X и Y)

Да, это приводит к скачкам размера листа при изменении страницы. Это неудачно, но лучше, чем альтернативы в этом конкретном приложении.

В этом случае док-станция Aero не поддерживается для этого ветра, поскольку она не верхнего уровня.


FWIW, наличие сообщений об изменениях всегда последовательно для всех элементов управления и наличие индикатора, если это было вызвано действием пользователя или программно занимает довольно высокое место в моем списке "существенных для API управления пользовательским интерфейсом".

0 ответов

Другие вопросы по тегам