[英]Maximum and minimum window sizes in WINAPI
我在StackOverflow上发现了一些关于我主题的问题。 其中一个就在这里 。
我还阅读了有关MINMAXINFO
的Microsoft文档以及与此结构相关的消息。 我根本无法使它工作......这是我到目前为止所尝试的:
case WM_PAINT:
{
MINMAXINFO mmi = { 0 };
SendMessage(hWnd, WM_GETMINMAXINFO, NULL, (LPARAM)&mmi);
POINT sz = { 640, 480 };
mmi.ptMaxSize = sz;
}
break;
我认为这是完全错误的,因为它对窗户没有任何影响......
我怎样才能使这个工作,最小尺寸为W: 450, H: 250
,最大W:800, H: 600
?
我需要的效果的进一步说明:当用户拖动窗口的一个角落或边框,并且窗口具有最大/最小尺寸时,用户不能使窗口大于或小于minimum_size
/ maximum_size
WM_GETMINMAXINFO
是系统发送到窗口的消息。 当它想知道窗口的最小和最大允许大小时,它会发送该消息。 你从不发送那条消息。 但是,您可以在发送给您时回复该消息。
因此,您需要在窗口过程中为WM_GETMINMAXINFO
添加一个案例:
case WM_GETMINMAXINFO:
{
MINMAXINFO* mmi = (MINMAXINFO*)lParam;
mmi->ptMaxSize.x = 800;
mmi->ptMaxSize.y = 600;
return 0;
}
事实证明,您想要控制跟踪大小。 这样做:
case WM_GETMINMAXINFO:
{
MINMAXINFO* mmi = (MINMAXINFO*)lParam;
mmi->ptMinTrackSize.x = 450;
mmi->ptMinTrackSize.y = 250;
mmi->ptMaxTrackSize.x = 640;
mmi->ptMaxTrackSize.y = 480;
return 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.