WM_GETMINMAXINFO позволяет настраивать минимум больше, но не меньше, чем при начале изменения размера - PullRequest
0 голосов
/ 09 марта 2020

Я хочу ограничить диапазон изменения ширины windows в зависимости от высоты. Я делаю это через WM_GETMINMAXINFO, но есть странность (по крайней мере, в Win10). Если во время запуска изменения размера и моя высота окна поддерживает минимальную ширину, скажем, 80, она никогда не опускается ниже 80. Поскольку я перетаскиваю, если я уменьшаю высоту, чтобы она изменила минимальную ширину до 100, она соблюдает это, но если я перетащил и увеличил высоту, чтобы минимальная ширина изменилась на 60, она все равно останавливается на 80 (на протяжении всего пути вызывается WM_GETMINMAXINFO). Есть ли хитрость, чтобы заставить его работать?

Одна хитрость, о которой я подумал, - если бы я мог обнаружить начало изменения размера, я мог бы просто использовать некоторый минимум, например, 10, но тогда следующие запросы будут использовать фактические реальные ценности и решат проблему. Есть мысли?

TIA !!

1 Ответ

0 голосов
/ 10 марта 2020

Добавьте логи c в WM_WINDOWPOSCHANGING вместо использования WM_GETMINMAXINFO.

case WM_WINDOWPOSCHANGING:
{
  // call default handler
  ::DefWindowProc(hwnd, umsg, wparam, lparam);

  // get structure pointer
  WINDOWPOS *wp=(WINDOWPOS *) lparam;

  // ... add logic here ...

  return 0;
}
...