WM_GETMINMAXINFO允许将最小值调整为大于但不小于开始调整大小时的值



我想根据高度限制窗口宽度的调整范围。我是通过WM_GETMINMAXINFO实现的,但有一个怪癖(至少在Win10中是这样(。如果在开始调整大小时,我的窗口高度支持最小宽度,比如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;
}

最新更新