WM_GETMINMAXINFO似乎不起作用。如何获得窗口的最小和最大可能尺寸?

时间:2010-11-09 14:45:27

标签: mfc window size max minimum

我正在使用MFC。我有一个自定义对话框,它是从应用程序的资源文件(使用Visual Studio 6对话框设计器设计)创建的,我需要从中获取最小/最大信息。我做了以下事情:

MINMAXINFO minMaxInfo;
LRESULT lresult = m_wnd->SendMessage(WM_GETMINMAXINFO, 0, (LPARAM)&minMaxInfo);

值'lresult'为0,表示消息由应用程序处理。但是,minMaxInfo结构未填充有意义的值。

以上代码是否有错误?还有另一种方法可以从对话中获取最小/最大信息吗?

我不想自己处理MINMAXINFO消息。

2 个答案:

答案 0 :(得分:0)

根据MSDN:

“当窗口的大小或位置即将发生变化时发送到窗口。应用程序可以使用此消息覆盖窗口的默认最大大小和位置,或其默认的最小或最大跟踪大小。”

因为它没有经过重新调整大小,所以信息不存在。

编辑:http://msdn.microsoft.com/en-us/library/ms632626(VS.85).aspx

答案 1 :(得分:0)

如果您签出Microsoft's documentation for WM_GETMINMAXINFO,您会看到Windows在发送邮件之前使用默认值初始化结构。消息的默认处理程序将保持这些值不变;我猜你自己从来没有初始化过这些价值观,这就是为什么你没有看到有意义的价值观。

消息可能不会按照您的想法执行,但无论如何都不会有用。当我有一个可调整大小的对话框时,我在GetWindowRect中放了OnInitDialog并将其保存为窗口的最小大小。我从来没有觉得需要限制最大尺寸。