VB用End退出,不会发生Form_Unload事件

VB应用 专栏收录该内容
15 篇文章 0 订阅

iamlaosong文

写个小工具,想在Form_Unload事件中做些退出处理,结果发现,用End退出时,Form_Unload事件并不发生,无法执行其中的代码。点击窗体右上角的叉(关闭窗口)是会触发Form_Unload事件的,但是因为一些原因我关闭了右上角按钮的显示(属性ControlBox=False),怎么办呢?解决办法就是用unload me退出。

End和Unload me的差别
       End是强制结束整个程序,而Unload Me是卸载当前窗体,当程序中最后一个窗体被卸载后,整个程序将自动结束,如果当前窗体不是程序中的最后一个窗体,程序是不会结束的。简单的说就是end 是全部结束, Unload Me是当前窗口结束。End是强制关闭,不会发生Form_Unload和Form_Terminate事件,而Unload Me关闭前会发生上面个事件。

还有个能力更小的Exit Sub,退出过程,即:End > Unload Me > Exit Sub

此外,End因强制退出还会引发一些内存错误,我在做一个用摄像头拍照的工具时,用Unload Me退出没有任何问题,但用End退出时,会报出下列内存错误,程序非正常关闭。


不知是不是VB的BUG?

  • 1
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

内有设计窗体的图片,和运行效果图 该窗体由全图片构造,包括,标题栏,最大化、最小化、关闭按钮,一下为部分代码, Private Sub Form_load() Dim retValue As Long Image5.Picture = LoadPicture("D:\vb测试\vb实例\窗体的设计2\8.jpg") Image6.Picture = LoadPicture("D:\vb测试\vb实例\窗体的设计2\8.jpg") Image7.Picture = LoadPicture("D:\vb测试\vb实例\窗体的设计2\8.jpg") Image8.Picture = LoadPicture("D:\vb测试\vb实例\窗体的设计2\8.jpg") Form1.Top = 0 '设置窗体上边界位置 Form1.Left = Screen.Width - Form1.Width retValue = SetWindowPos(Me.hwnd, HWND_TOPMOST, Me.CurrentX, Me.CurrentY, 300, 300, SWP_SHOWWINDOW) End Sub Private Sub Image1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) ReleaseCapture SendMessage hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0& End Sub Private Sub Image2_Click() Form1.WindowState = 1 End Sub Private Sub Image4_Click() End End Sub Private Sub Image5_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) Image5.Picture = LoadPicture("D:\vb测试\vb实例\窗体的设计2\9.jpg") End Sub Private Sub Image5_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single) Image5.Picture = LoadPicture("D:\vb测试\vb实例\窗体的设计2\8.jpg") End Sub Private Sub Image6_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) Image6.Picture = LoadPicture("D:\vb测试\vb实例\窗体的设计2\9.jpg") End Sub Private Sub Image6_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single) Image6.Picture = LoadPicture("D:\vb测试\vb实例\窗体的设计2\8.jpg") End Sub
©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值