如何使一个mdi的子窗口在显示的时候位于主窗口的中央,如何使窗口的大小不能改变,
我定义的许多mdi的子窗口,在设计时,固定了大小,正好包括了窗口上的所有控件,但在运行的时候,窗口大小或者变大,或者变小。使很多窗口上的东西显示不出来。这是什么原因
我定义的许多mdi的子窗口,在设计时,固定了大小,正好包括了窗口上的所有控件,但在运行的时候,窗口大小或者变大,或者变小。使很多窗口上的东西显示不出来。这是什么原因
Me.Move (mdifrm.Width - Me.Width) / 2, (mdifrm.Height - Me.Height) / 2
End Sub
Me.Move (mdifrm.Width - Me.Width) / 2, (mdifrm.Height - Me.Height) / 2
End Sub
'在改变大小时再触发一个事件
Private Sub Form_Resize()
Me.Move (mdifrm.Width - Me.Width) / 2, (mdifrm.Height - Me.Height) / 2
Me.Width=你要的宽度
Me.Height=你要的高度
End Sub
1 Me.Height=XXX(预先设置的)
Me.width=XXX
或者你用Borderstyle=1试试,我试过好象不行的。
2 Me.Move (mdifrm.Width - Me.Width) / 2, (mdifrm.Height - Me.Height) / 2
如果要限制可以:模块中:Option ExplicitDeclare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDest As Any, pSource As Any, ByVal ByteLen 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 LongPublic Const GWL_WNDPROC = (-4)
Public Const WM_GETMINMAXINFO = &H24
Public OldWindowProc As LongType 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 TypePublic Function WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wp As Long, ByVal lp As Long) As Long
If Msg = WM_GETMINMAXINFO Then
Dim MinMax As MINMAXINFO
CopyMemory MinMax, ByVal lp, Len(MinMax)
MinMax.ptMinTrackSize.x = 300
MinMax.ptMinTrackSize.y = 200
MinMax.ptMaxTrackSize.x = 640
MinMax.ptMaxTrackSize.y = 480
CopyMemory ByVal lp, MinMax, Len(MinMax)
WndProc = 1
Exit Function
End If
WndProc = CallWindowProc(OldWindowProc, hwnd, Msg, wp, lp)
End Function限制大小的窗口中:Option ExplicitPrivate Sub Form_Load()
'w = 200: h = 100
OldWindowProc = GetWindowLong(Me.hwnd, GWL_WNDPROC)
Call SetWindowLong(Me.hwnd, GWL_WNDPROC, AddressOf WndProc)
End Sub
Private Sub Form_Unload(Cancel As Integer)
Call SetWindowLong(Me.hwnd, GWL_WNDPROC, OldWindowProc)
End Sub
请问怎么不能在Resize里面做事件呢?我还不明白呢,可以说它影响的是什么吗?闪烁?好象是有,不过在一般的情况下是不会的,多谢cuizm(射天狼)提醒,我也看看能不能用你的模块代替。