把窗体的大小固定,不能随意改变,怎么实现呢?请大家多指教,谢谢!
解决方案 »
- 如何输出Frame1控件里的所有内容到EXCEL表格里
- 除了写入文件的方式,还有什么方法得到'ping 192.168.0.1'的返回值?
- 如何为WebBrowser控件添加指定的文件路径
- 如何把从SQLServer2000中选出来的数据结果集导出成Excel表?
- 问什么我的vb不支持鼠标滚轮?
- sql 问题
- 关于visdata的问题,帮忙up者有分
- #####继续请教获取大文件的大小的问题?(ch21st和zyl910请进)
- 我该如何修改数据库来接受数据!高手请进!
- 改变插入点后的字体风格设置,为何不起作用???
- 怎样实现MSFlexGrid里面的多行多列的拷贝、粘贴 (在线等哈)
- 请问:vb如何实现Windows的计划任务?急用阿,100分,解决就给分
Public Const WM_GETMINMAXINFO As Long = &H24Public Type POINTAPI
x As Long
y As Long
End TypeType MINMAXINFO
ptReserved As POINTAPI
ptMaxSize As POINTAPI
ptMaxPosition As POINTAPI
ptMinTrackSize As POINTAPI
ptMaxTrackSize As POINTAPI
End Type
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private 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
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Public DefWindowProc As Long
Public minX As Long, minY As Long
Public maxX As Long, maxY As Long
Public Function WindowProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Select Case uMsg
Case WM_GETMINMAXINFO
Dim MMI As MINMAXINFO
CopyMemory MMI, ByVal lParam, LenB(MMI)
With MMI
.ptMinTrackSize.x = minX
.ptMinTrackSize.y = minY
.ptMaxTrackSize.x = maxX
.ptMaxTrackSize.y = maxY
End With
CopyMemory ByVal lParam, MMI, LenB(MMI)
WindowProc = 0
Case Else
WindowProc = CallWindowProc(DefWindowProc, hwnd, uMsg, wParam, lParam)
End Select
End Function
Private Sub Form_Load()
minX = 400 '如果把minX/minY和maxX/maxY设置为相等,则不可以改变窗体大小
minY = 400
maxX = 600
maxY = 600
DefWindowProc = SetWindowLong(Me.hwnd, GWL_WNDPROC, AddressOf WindowProc)
End SubPrivate Sub Form_Unload(Cancel As Integer)
SetWindowLong Me.hwnd, GWL_WNDPROC, DefWindowProc
DefWindowProc = 0
End Sub
再设置minbutton=true
就可以使用最小化按钮了