WM_GETMINMAXINFO 允许将最小值调整为比开始调整大小时更大但不能更小

WM_GETMINMAXINFO allows minimum to be adjusted larger but not smaller than when resizing started

我想根据高度限制 windows 宽度的调整范围。我通过 WM_GETMINMAXINFO 执行此操作,但有一个怪癖(至少在 Win10 中)。如果在开始调整大小时,我的 window 高度支持最小宽度,比如 80,它永远不会低于 80。当我拖动时,如果我降低高度以便将最小宽度更改为 100,它很荣幸,但如果我拖动并增加高度,使最小宽度变为 60,它仍会停在 80(WM_GETMINMAXINFO 一直被调用)。有什么技巧可以让它发挥作用吗?

我想到的一个技巧是,如果我可以检测到调整大小的开始,我可以只使用 10 之类的最小值,但接下来的请求将使用实际的实际值并解决问题。有什么想法吗?

TIA!!

将逻辑添加到 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;
}