2010-11-09 65 views
-1

我正在使用MFC。我有一個從應用程序資源文件(使用Visual Studio 6對話框設計器設計)創建的自定義對話框,我需要從中獲取最小/最大信息。我執行以下操作:WM_GETMINMAXINFO似乎不起作用。如何獲得一個窗口的最小和最大可能的大小?

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

值'lresult'爲0,表示消息由應用程序處理。但是,minMaxInfo結構沒有填充有意義的值。

上面的代碼是否有bug?是否有另一種方法從對話框中獲取最小/最大信息?

我不想自己處理MINMAXINFO消息。

回答

0

按照MSDN:

「發送到一個窗口時,窗口的大小或位置即將更改應用程序可以使用這個消息,否決窗口的默認最大化大小和位置,或者它的。默認的最小或最大跟蹤尺寸「。

人類,因爲它不經過重新規模,信息不存在。

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

0

如果檢查出Microsoft's documentation for WM_GETMINMAXINFO你會看到它發送消息之前的Windows初始化使用默認值的結構。消息的默認處理程序將保持這些值不變;我猜你從未初始化這些值,這就是爲什麼你沒有看到有意義的值。

消息可能不會做你認爲它所做的事,反正也不會有用。當我有一個可調整大小的對話框時,我在我的OnInitDialog中輸入一個GetWindowRect,並將其保存爲窗口的最小大小。我從來沒有覺得有必要限制最大尺寸。

相關問題