Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) If UnloadMode = vbFormControlMenu Then Cancel = True End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) Cancel = True End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) If UnloadMode = vbFormControlMenu Then Cancel = True End Subunloadmode 参数返回下列值:常数 值 描述 vbFormControlMenu 0 用户从窗体上的“控件”菜单中选择“关闭”指令。 vbFormCode 1 Unload 语句被代码调用。 vbAppWindows 2 当前 Microsoft Windows 操作环境会话结束。 vbAppTaskManager 3 Microsoft Windows 任务管理器正在关闭应用程序。 vbFormMDIForm 4 MDI 子窗体正在关闭,因为 MDI 窗体正在关闭。 vbFormOwner 5 因为窗体的所有者正在关闭,所以窗体也在关闭。
Private Sub Form_Unload(Cancel As Integer) Cancel = 1 End Sub
干脆屏蔽它…………Option ExplicitPrivate Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As LongPrivate Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As LongPrivate Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As LongPrivate Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As LongPrivate Const MF_BYPOSITION = &H400&Private Const MF_REMOVE = &H1000&Private Sub DisableX() Dim hMenu As Long Dim nCount As Long hMenu = GetSystemMenu(Me.hwnd, 0) nCount = GetMenuItemCount(hMenu)
Call RemoveMenu(hMenu, nCount - 1, MF_REMOVE Or MF_BYPOSITION) Call RemoveMenu(hMenu, nCount - 2, MF_REMOVE Or MF_BYPOSITION)
End SubPrivate Sub Form_Load() DisableX End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) Cancel = Not (CBool(UnloadMode)) End Sub
If UnloadMode = vbFormControlMenu Then Cancel = True
End Sub
Cancel = True
End Sub
If UnloadMode = vbFormControlMenu Then Cancel = True
End Subunloadmode 参数返回下列值:常数 值 描述
vbFormControlMenu 0 用户从窗体上的“控件”菜单中选择“关闭”指令。
vbFormCode 1 Unload 语句被代码调用。
vbAppWindows 2 当前 Microsoft Windows 操作环境会话结束。
vbAppTaskManager 3 Microsoft Windows 任务管理器正在关闭应用程序。
vbFormMDIForm 4 MDI 子窗体正在关闭,因为 MDI 窗体正在关闭。
vbFormOwner 5 因为窗体的所有者正在关闭,所以窗体也在关闭。
Cancel = 1
End Sub
首先得判断是否是点击窗体右上角的关闭按钮出发的query_unload事件,如果是则设置cancel=true,程序就不会执行UNLOAD事件
Dim hMenu As Long
Dim nCount As Long
hMenu = GetSystemMenu(Me.hwnd, 0)
nCount = GetMenuItemCount(hMenu)
Call RemoveMenu(hMenu, nCount - 1, MF_REMOVE Or MF_BYPOSITION)
Call RemoveMenu(hMenu, nCount - 2, MF_REMOVE Or MF_BYPOSITION)
End SubPrivate Sub Form_Load()
DisableX
End Sub
Cancel = Not (CBool(UnloadMode))
End Sub