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;
}
我想根据高度限制 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;
}