偶然看到在“如何解决窗体缩小到一定大小,维持预定最小大小??? ”这个问题中rainstormmaster推荐了一个页面http://sunh.hosp.ncku.edu.tw/~cww/html/q00154.html 。其中第一种解决方法(拦截WM_GETMINMAXINFO消息)中有如下代码:If Msg = WM_GETMINMAXINFO Then
Dim maxmin As MINMAXINFO
CopyMemory maxmin, ByVal lParam, Len(maxmin)
maxmin.ptMaxTrackSize.x = 500 '設定最大Resize的寬度
maxmin.ptMaxTrackSize.y = 400 '設定最大Resize的高度
maxmin.ptMinTrackSize.x = 300 '設定最大小Resize的寬度
maxmin.ptMinTrackSize.y = 300 '設定最大小Resize的高度
CopyMemory ByVal lParam, maxmin, Len(maxmin)
wndproc = DefWindowProc(hWnd, uMsg, wParam, lParam)
Else
'將之送往原來的Window Procedure
wndproc = CallWindowProc(preWinProc, hwnd, Msg, wParam, lParam)
End If我测试后发现设定最大高度和宽度可以,但是设定最小高度和宽度无效。想请教rainstormmaster为什么,和如何解决。
Dim maxmin As MINMAXINFO
CopyMemory maxmin, ByVal lParam, Len(maxmin)
maxmin.ptMaxTrackSize.x = 500 '設定最大Resize的寬度
maxmin.ptMaxTrackSize.y = 400 '設定最大Resize的高度
maxmin.ptMinTrackSize.x = 300 '設定最大小Resize的寬度
maxmin.ptMinTrackSize.y = 300 '設定最大小Resize的高度
CopyMemory ByVal lParam, maxmin, Len(maxmin)
wndproc = DefWindowProc(hWnd, uMsg, wParam, lParam)
Else
'將之送往原來的Window Procedure
wndproc = CallWindowProc(preWinProc, hwnd, Msg, wParam, lParam)
End If我测试后发现设定最大高度和宽度可以,但是设定最小高度和宽度无效。想请教rainstormmaster为什么,和如何解决。
wndproc = DefWindowProc(hWnd, uMsg, wParam, lParam)
这局有问题,改为:
wndproc = DefWindowProc(hWnd, Msg, wParam, lParam)
另外,我在xp下测试也没出现你说的问题
Dim maxmin As MINMAXINFO
CopyMemory maxmin, ByVal lParam, Len(maxmin)
maxmin.ptMaxTrackSize.x = 500 '設定最大Resize的寬度
maxmin.ptMaxTrackSize.y = 400 '設定最大Resize的高度
maxmin.ptMinTrackSize.x = 300 '設定最大小Resize的寬度
maxmin.ptMinTrackSize.y = 300 '設定最大小Resize的高度
CopyMemory ByVal lParam, maxmin, Len(maxmin)回调是我自己写的,应该没有什么问题。奇怪就奇怪在能限制最大却不能限制最小。