gpt4 book ai didi

c - WINAPI 中的最大和最小窗口大小

转载 作者:可可西里 更新时间:2023-11-01 12:41:07 26 4
gpt4 key购买 nike

我在 StackOverflow 上发现了更多关于我的主题的问题。其中之一是 here .

我还阅读了有关 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 /最大大小

最佳答案

WM_GETMINMAXINFO是系统发送到窗口的消息。当它想知道窗口的最小和最大允许尺寸时,它会发送该消息。您永远不会发送该消息。但是,您可以在邮件发送给您时对其进行回复。

因此,您需要在窗口过程中为 WM_GETMINMAXINFO 添加一个 case:

case WM_GETMINMAXINFO:
{
MINMAXINFO* mmi = (MINMAXINFO*)lParam;
mmi->ptMaxSize.x = 800;
mmi->ptMaxSize.y = 600;
return 0;
}

原来是要控制tracking size。这样做:

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;
}

关于c - WINAPI 中的最大和最小窗口大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19035481/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com