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

进一步说明我需要的效果:当用户拖动一个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; }