如何改变窗体上的"关闭"按钮的功能

tuyiwenya 2006-10-13 10:03:47
当用户点击窗体上的"关闭"按钮时,不是关闭窗体,而是把窗体给隐藏了!请问代码如何实现?
...全文
205 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
mail2491207 2006-10-14
  • 打赏
  • 举报
回复
Private Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long
Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Const MF_BYPOSITION = &H400&

Private Sub Form_Load()
Dim hwndMenu As Long
Dim c As Long
hwndMenu = GetSystemMenu(Me.hwnd, 0)
c = GetMenuItemCount(hwndMenu)
DeleteMenu hwndMenu, c - 1, MF_BYPOSITION
c = GetMenuItemCount(hwndMenu)
DeleteMenu hwndMenu, c - 1, MF_BYPOSITION
End Sub
happy_sea 2006-10-14
  • 打赏
  • 举报
回复
更好的做法是在Form_QueryUnload事件中判断是如何引起的unload事件再进行处理,比如以下代码只有当用户点击关闭按钮时才隐藏窗体,而其他情况下(比如你自己使用了unload语句来结束窗体、任务管理器要结束这个窗体、windows正在关机等)会正常卸载窗体:

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If UnloadMode = 0 Then
Me.Visible = False
Cancel = True
End If
End Sub

附UnloadMode取值说明:
vbFormControlMenu 0 用户从窗体上的“控件”菜单中选择“关闭”指令。
vbFormCode 1 Unload 语句被代码调用。
vbAppWindows 2 当前 Microsoft Windows 操作环境会话结束。
vbAppTaskManager 3 Microsoft Windows 任务管理器正在关闭应用程序。
vbFormMDIForm 4 MDI 子窗体正在关闭,因为 MDI 窗体正在关闭。
Hassle 2006-10-13
  • 打赏
  • 举报
回复
Option Explicit

Private m_bExit As Boolean

Private Sub Form_Load()
m_bExit = False
End Sub

Private Sub Form_Unload(Cancel As Integer)
If m_bExit = False Then
Cancel = 1
Me.Visible = False
End If
End Sub

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧