VB6 - X按钮触发哪个事件?

3

当单击窗体右上角的红色X按钮(我不知道它正式称为什么)时,我希望在我的MDI窗体中激活一段代码,以便程序可以正常关闭。

在窗体中,当发生这种情况时会调用哪个方法?


3
虽然这并没有回答你的问题,但是你知道VB6是在1998年推出的吗? :) - Cheeso
@Cheeso,我才刚开始学习它。没有什么比跟上最新潮流更好的了,不是吗? - Brian Hooper
自从回答这个问题后,我读了1998年的评论,现在感觉很老了 :( - Jaywalker
嘿,布莱恩 - 这是为了工作吗?如果不是的话,也许你应该学习Visual Basic Express(带有VB.NET),这比商业VB6工具更好。VB6(工具)现在已经不再得到微软的支持,除非你有特殊的支持合同。很少有人有。而且有“VB.NET For Dummies”书籍,使学习变得容易。不,我没有称呼你为“Dummy”。只是这么说而已。 - Cheeso
2
@cheeso 为了准确起见:VB6运行库仍然得到Microsoft的全面支持。但是,是的,Brian应该认真考虑使用VB.Net。 - MarkJ
显示剩余2条评论
2个回答

7

当调用 Form_QueryUnload 函数时,如果您已经指定了一个 MDI 应用程序,则会调用确切的事件:

Private Sub MDIForm_QueryUnload(cancel As Integer, unloadmode As Integer)

在该函数中,如果将cancel设置为非零值,则会阻止应用程序退出。换句话说,QueryUnload 是一种查询表单是否应卸载的方式。第二个参数 unloadmode 提供了有关如何触发此卸载的信息。

MSDN 上的更多帮助.


谢谢。这正是我在寻找的内容。请原谅我的问题中的初级术语;我其实是一个X/Motif程序员,所以行话都不同。如果你不知道任何东西的名称,要找到想要的东西并不容易。 - Brian Hooper

5

在MDI应用程序中使用Unload和QueryUnload事件

在MDI应用程序中,当您尝试卸载主MDI窗体时,VB会首先卸载所有打开的子窗体。这意味着各种Unload和QueryUnload事件在MDI应用程序中具有特殊的时间关系。当尝试卸载主MDI窗体时,Unload和QueryUnload事件的顺序如下:

1. MDI窗体的 QueryUnload 事件

2. 每个打开的子窗体的 QueryUnload 事件

3. 每个子窗体的 Unload 事件

4. MDI窗体的 Unload 事件

如果在任何这些事件过程中将Cancel设置为True,则整个卸载过程将停止。如果在任何QueryUnload事件过程中停止卸载,则不会触发任何Unload事件,并且不会卸载任何窗体。如果在任何Unload事件过程中停止卸载,则只有在取消发生之前已经发生了Unload事件的窗体才会卸载。


谢谢。这可能会在接下来的几个小时里为我省去很多麻烦。 - Brian Hooper
它似乎也在调用每个表单的Form_Load事件。你是否期望这样,还是有其他问题? - Brian Hooper
在退出时为子窗口添加Form_Load?我怀疑。无论如何,像Form_Load中添加一些代码,比如MsgBox并放置一个断点(F9插入断点)。如果调试器在您的断点上停止,请按Ctrl-L并检查您的调用堆栈。 - user184968
抱歉给您带来额外的麻烦。我突然想到,在运行整洁关闭代码后,我可以使用极端手段终止程序,因此不在乎它想要做什么。再次感谢您的帮助。 - Brian Hooper

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接