如何在运行时限制窗口Resize的大小VB6中比方说要允许用户调整窗口大小
可窗口的Width和Height应该有个最小值
否则用户就没法操作了在窗体中写下这样的语句,
Private Sub Form_Resize()
If Form1.ScaleHeight < 2000 Then
Form1.Height = 2000
End If
If Form1.ScaleWidth < 2000 Then
Form1.Width = 2000
End If
End Sub
当窗口小于2000时,调整导致界面闪烁严重.
请问,如何在运行时限制窗口Resize的大小?
可窗口的Width和Height应该有个最小值
否则用户就没法操作了在窗体中写下这样的语句,
Private Sub Form_Resize()
If Form1.ScaleHeight < 2000 Then
Form1.Height = 2000
End If
If Form1.ScaleWidth < 2000 Then
Form1.Width = 2000
End If
End Sub
当窗口小于2000时,调整导致界面闪烁严重.
请问,如何在运行时限制窗口Resize的大小?
解决方案 »
- 为什么我用VB调用DLL,总是提示找不到呢?
- vb winsock问题
- 我写的VB6软件,用installshield 12版本打包后出现2个错误,如何解决?请看这2个错误描述
- 压缩文件夹出现多层目录的问题!!
- 下拉控件如何實現鼠標點擊後,使得光標自動跳到下一個控件
- 这两个循环能够合并吗?
- 请问如何在vb里把数据以二进制的形式存到access里面,然后再读出来呢
- 错误“7”,内存溢出,是什么原因哦
- dataGrid控件怎么找到啊?
- 关于ActiveMovie的一个愚蠢问题
- 记录集和连接对象在用后立即close,然后就set nothing,这样做对吗?[我是新手]
- ■■■ 一个常用的问题:如何有效地将表格中的数据导出到 Excel 中,借其生成图表(饼图) ■■■
'代码如下
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)
Else
wndproc = CallWindowProc(preWinProc, hwnd, Msg, wParam, lParam)
End If
End Function
'窗体的代码
Sub Form_Load()
Dim ret As Long
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
ret = SetWindowLong(Me.hwnd, GWL_WNDPROC, preWinProc)
End Sub
在FORM_RESIZE里面,将保存的值赋给窗体的属性.