下面是一段关闭系统的代码,但只能关闭最近的一个窗体,而无法关闭前面打开的几个窗体,不知为什么?怎样才能在关闭系统的同时,关闭前面打开的所有窗体,彻底退出系统。
现在用的关闭系统代码如下:
Private Sub cdtc_Click()
If MsgBox("你确实要退出吗?", vbYesNo + vbExclamation, "系统询问") = vbYes Then
Unload Me
End
Else
Cancel = True
End If
End Sub
注:偶的软件,所有打开窗体都是用exe窗体文件,不知关闭代码的设置是否与这有关?
现在用的关闭系统代码如下:
Private Sub cdtc_Click()
If MsgBox("你确实要退出吗?", vbYesNo + vbExclamation, "系统询问") = vbYes Then
Unload Me
End
Else
Cancel = True
End If
End Sub
注:偶的软件,所有打开窗体都是用exe窗体文件,不知关闭代码的设置是否与这有关?
dim f as form
If MsgBox("你确实要退出吗?", vbYesNo + vbExclamation, "系统询问") = vbYes Then
for each f in forms
unload f
next
end
Else
Cancel = True
End If
End Sub
Dim i As Integer, h As Long
If MsgBox("你确实要退出吗?", vbYesNo + vbExclamation, "系统询问") = vbYes Then
'假定你已经将你启动的窗体的 Caption 保存在 List1 中
For i = 0 To List1.ListCount - 1
h = FindWindow(0&, List1.List(i))
If h Then SendMessage h, WM_CLOSE, 0, 0
Next i Unload Me
End
Else
Cancel = True
End If
End Sub
但是不知道有没有保存其他窗体的caption
呵呵
Private Sub cdtc_Click()'(这一行出现黄底)
Dim i As Integer, h As Long
If MsgBox("你确实要退出吗?", vbYesNo + vbExclamation, "系统询问") = vbYes Then
'假定你已经将你启动的窗体的 Caption 保存在 List1 中
For i = 0 To List1.ListCount - 1
h = FindWindow(0&, List1.List(i))'(这一行的FindWindow出现兰底)
If h Then SendMessage h, WM_CLOSE, 0, 0
Next i
我实在不明白为什么会所有的窗体都是独立的EXE文件,请问楼主这样做的目的何在呢?
1、由5000多张图片组成的60个专题(60个文件夹)每个文件夹内有近百张图片,并含该图片的放大窗口及文字说明。因此一个工程内就有一百多个大小窗体,于是采用了每个专题编译成一个独立的exe窗体文件;
2、各工程(专题)之间的跳转就靠Shell "rundll32.exe url.dll,FileProtocolHandler " & App.Path & "\专题名.exe", vbMaximizedFocus语句来完成。
3、所有专题的主页用悬浮式窗体(始终置前),来调用,各专题窗体还有自身的菜单条,可以相互跳转。
由于偶刚学VB6,所以用了上面的笨办法,目前试作了几个专题窗口,运行还算稳定(但不知还有何意外问题?),
到目前为止,就发现只要是由悬浮窗体打开的窗体,在退出系统时就无法关闭,而由各专题窗体之间的跳转,在上面代码后加一个Unload Me就可以了。
以上如有不妥之处,请指正,谢谢!
SendMessage
这2个函数
以及WM_CLOSE这个常量你定义了没有?去api浏览器里找