界面:至少需要最小,关闭按钮
我用了这个函数来实现,但不行,大家帮忙看看Public Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As LongPublic Const SWP_NOSIZE = &H1
Public Const SWP_NOMOVE = &H2Public Const HWND_NOTOPMOST = -2
Public Sub SetFormNoSize(ByVal hwnd As Long, ByVal x As Long, ByVal y As Long, cx As Long, cy As Long)
Dim rc As Long
rc = SetWindowPos(hwnd, -1, x, y, cx, cy, SWP_NOMOVE Or SWP_NOSIZE)
End Sub
我用了这个函数来实现,但不行,大家帮忙看看Public Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As LongPublic Const SWP_NOSIZE = &H1
Public Const SWP_NOMOVE = &H2Public Const HWND_NOTOPMOST = -2
Public Sub SetFormNoSize(ByVal hwnd As Long, ByVal x As Long, ByVal y As Long, cx As Long, cy As Long)
Dim rc As Long
rc = SetWindowPos(hwnd, -1, x, y, cx, cy, SWP_NOMOVE Or SWP_NOSIZE)
End Sub
也就是说不要最大化按钮了,
在窗体的属性中设置maxbutton=false就可以了.
Private lminh As Long '最小高度
Private lmaxw As Long '最大宽度
Private lmaxh As Long '最小高度 Private Declare Function SetWindowLong& Lib "user32" _
Alias "SetWindowLongA" (ByVal hwnd&, ByVal nIndex&, _
ByVal dwNewLong&)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 LongDeclare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDest As Any, pSource As Any, ByVal ByteLen As Long)
Public Const GWL_WNDPROC = (-4)
Public Const WM_GETMINMAXINFO = &H24
'==================================================
'回调
Function WinProc&(ByVal hwnd&, ByVal wMsg&, _
ByVal wParam&, ByVal lParam&)
Select Case wMsg&
Case WM_GETMINMAXINFO
Dim MinMax As MINMAXINFO
CopyMemory MinMax, ByVal lParam, Len(MinMax)
MinMax.ptMinTrackSize.x = lminw
MinMax.ptMinTrackSize.y = lminh
MinMax.ptMaxTrackSize.x = lmaxw
MinMax.ptMaxTrackSize.y = lmaxh
CopyMemory ByVal lParam, MinMax, Len(MinMax)
WinProc& = 1
Exit Function
End Select
WinProc& = CallWindowProc(OldProc, hwnd, wMsg, wParam, lParam)
End Function
'==================================================
'==================================================
'挂钩
Sub Hook(ByVal nhWnd&, minw As Long, minh As Long, maxw As Long, maxh As Long) If OldProc <> 0 Then Exit Sub
mhWnd& = nhWnd&
lminw = minw
lminh = minh
lmaxw = maxw
lmaxh = maxh
OldProc = SetWindowLong(nhWnd&, GWL_WNDPROC, AddressOf WinProc)End Sub
'==================================================
'==================================================
'脱钩
Sub UnHook() If OldProc = 0 Then Exit Sub SetWindowLong mhWnd, GWL_WNDPROC, OldProc
OldProc = 0
End Sub
'==================================================
Dim OldProc&放在前面
ptReserved As POINTAPI
ptMaxSize As POINTAPI
ptMaxPosition As POINTAPI
ptMinTrackSize As POINTAPI
ptMaxTrackSize As POINTAPI
End Type