在form中有borderstyle这个属性可选,而在MDI却没有这个选项。
还有用什么方法才能去除MDIform的最大和最小化的按钮,在FROM中有mixbotton和maxbotton这两个选项可以设,而在MDIFORM中却没有,我该怎么办呢?~~~
还有用什么方法才能去除MDIform的最大和最小化的按钮,在FROM中有mixbotton和maxbotton这两个选项可以设,而在MDIFORM中却没有,我该怎么办呢?~~~
Dim form_W As Long, form_H As Long '用来保存窗体最开始宽度与高度Private Sub MDIForm_Load()
form_W = Me.Width
form_H = Me.Height
End SubPrivate Sub MDIForm_Resize()
Me.Height = form_H
Me.Width = form_W
End Sub
Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Const SC_MAXIMIZE = &HF030
Private Const MF_BYCOMMAND = &H0&
Private Const WS_MAXIMIZEBOX = &H10000
Private Const GWL_EXSTYLE = (-20)
Private Const GWL_STYLE = (-16)
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
(ByVal hwnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
(ByVal hwnd As Long, _
ByVal nIndex As Long) As Long
Private Sub MDIForm_Load()
Dim hMenu As Long, Success As Long
hMenu = GetSystemMenu(hwnd, 0)
Success = DeleteMenu(hMenu, SC_MAXIMIZE, MF_BYCOMMAND)
Dim xl As Long
Me.Show
xl = GetWindowLong(hwnd, GWL_STYLE)
xl = xl And (Not WS_MAXIMIZEBOX)
SetWindowLong hwnd, GWL_STYLE, xl
End Sub
Dim form_W As Long, form_H As Long '用来保存窗体最开始宽度与高度Private Sub MDIForm_Load()
form_W = Me.Width
form_H = Me.Height
End SubPrivate Sub MDIForm_Resize()
Me.Height = form_H
Me.Width = form_W
End Sub我试着把这段代码添加,不知道为什么运行时看不到窗体的大小,只显示最大化和最小化的还有关闭的
按钮。
If Me.WindowState <> 0 Then
Me.WindowState = 0
End If
End Sub
从网上找的,可以使最大化按钮失效
Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Const SC_MAXIMIZE = &HF030
Private Const MF_BYCOMMAND = &H0&
Private Const WS_MAXIMIZEBOX = &H10000
Private Const GWL_EXSTYLE = (-20)
Private Const GWL_STYLE = (-16)
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
(ByVal hwnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
(ByVal hwnd As Long, _
ByVal nIndex As Long) As Long
Private Sub MDIForm_Load()
Dim hMenu As Long, Success As Long
hMenu = GetSystemMenu(hwnd, 0)
Success = DeleteMenu(hMenu, SC_MAXIMIZE, MF_BYCOMMAND)
Dim xl As Long
Me.Show
xl = GetWindowLong(hwnd, GWL_STYLE)
xl = xl And (Not WS_MAXIMIZEBOX)
SetWindowLong hwnd, GWL_STYLE, xl
End Sub
呵呵,谢谢兄弟,你这个代码是可以用,不过好多地方看的不大懂比如第一句中的"user32"是什么意思?这个语句是不是自定义函数过程?
Private Sub MDIForm_Resize()
If Me.WindowState <> 0 Then
Me.WindowState = 0
End If
End Sub
谢谢你!不过我要的不是这种效果~~不想中间有一个返回的过程~你的意思我是明白的。谢谢:)