首页 »VB教程 » formresize:限制Form Resize的最大值 »正文
formresize:限制Form Resize的最大值
来源: 发布时间:星期四, 2009年1月15日 浏览:18次 评论:0
当Form Position更动或大小改变时 会Send WM_GETMINMAXINFO 讯息 当我们取得这个讯息时 可以更动该讯息内定Windows Resize 值 不过本人目前只有测出如何限定其最大 Size 而最小 Size目前没有测出来 知道可者告诉我 Option Explicit '以下程式在module1.bas Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _ (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _ (ByVal hwnd As Long, ByVal nIndex As Long) As Long Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" _ (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, _ ByVal wParam As Long, ByVal lParam As Long) As Long Declare Sub CopyMemory Lib "KERNEL32" Alias "RtlMoveMemory" ( _ lpvDest As Any, lpvSource As Any, ByVal cbCopy As Long) Public Const GWL_WNDPROC = (-4) Public Const WM_GETMINMAXINFO = &H24 Type POINTAPI x As Long y As Long End Type Type MINMAXINFO ptReserved As POINTAPI ptMaxSize As POINTAPI ptMaxPosition As POINTAPI ptMinTrackSize As POINTAPI ptMaxTrackSize As POINTAPI End Type Public preWinProc As Long Public Function wndproc(ByVal hwnd As Long, ByVal Msg As Long, _ ByVal wParam As Long, ByVal lParam As Long) As Long Dim lwd As Long, hwd As Long 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) End If '将的送往原来Window Procedure wndproc = CallWindowProc(preWinProc, hwnd, Msg, wParam, lParam) End Function
'以下在Form Sub Form_Load Dim ret As Long '记录原本Window Procedure位址 preWinProc = GetWindowLong(Me.hwnd, GWL_WNDPROC) ret = SetWindowLong(Me.hwnd, GWL_WNDPROC, AddressOf wndproc) End Sub Private Sub Form_Unload(Cancel As Integer) Dim ret As Long '取消Message截取而使的又只送往原来Window Procedure ret = SetWindowLong(Me.hwnd, GWL_WNDPROC, preWinProc) End Sub
相关文章
读者评论
发表评论
|
|