偶然看到在“如何解决窗体缩小到一定大小,维持预定最小大小??? ”这个问题中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为什么,和如何解决。

解决方案 »

  1.   

    不会吧~~~!你是什么操作系统?我的xp+sp2。而且我只是限制窗口最小无效,可以限制窗口最大。代码我已经是直接复制的了。
      

  2.   

    晕,如果你直接复制粘贴的话,没崩溃就奇怪了:
    wndproc = DefWindowProc(hWnd, uMsg, wParam, lParam)
    这局有问题,改为:
    wndproc = DefWindowProc(hWnd, Msg, wParam, lParam)
    另外,我在xp下测试也没出现你说的问题
      

  3.   

    我的意思当然是直接复制中间的这段代码:
    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)回调是我自己写的,应该没有什么问题。奇怪就奇怪在能限制最大却不能限制最小。
      

  4.   

    rainstormmaster(暴风雨 v2.0)能不能将你的代码发一份给我。 多谢!
      

  5.   

    faysky2() 能不能将你的测试代码发一份给我。  多谢!