我在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
?
进一步说明我需要的效果:当用户拖动一个angular或窗口的边界,并且窗口具有最大/最小尺寸时,用户不能使窗口大于或小于最小尺寸/最大尺寸
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; }