1.你可以这样做
Private Sub MDIForm_Unload(Cancel As Integer)
If 条件不满足 Then
Cancel = 1 '返回程序,不退出
Exit Sub
Endif
End Sub
最大化和最小化你只能通过窗体状态控制,要屏蔽只能用API实现。
2.你可以用 API 的 FindWindow 函数查找窗体。不用 API 也可以实现,不过比较麻烦,
特别是你有好多不同的子窗体的情况。
Private Sub MDIForm_Unload(Cancel As Integer)
If 条件不满足 Then
Cancel = 1 '返回程序,不退出
Exit Sub
Endif
End Sub
最大化和最小化你只能通过窗体状态控制,要屏蔽只能用API实现。
2.你可以用 API 的 FindWindow 函数查找窗体。不用 API 也可以实现,不过比较麻烦,
特别是你有好多不同的子窗体的情况。
【VB声明】
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long【别名】
SetWindowLongA【说明】
在窗口结构中为指定的窗口设置信息 【返回值】
Long,指定数据的前一个值 【参数表】
hwnd ----------- Long,欲为其取得信息的窗口的句柄 nIndex --------- Long,请参考GetWindowLong函数的nIndex参数的说明 dwNewLong ------ Long,由nIndex指定的窗口信息的新值
【VB声明】
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long【别名】
GetWindowLongA【说明】
从指定窗口的结构中取得信息 【返回值】
Long,由nIndex决定。零表示出错。会设置GetLastError 【参数表】
hwnd ----------- Long,欲为其获取信息的窗口的句柄 nIndex --------- Long,欲取回的信息,可以是下述任何一个常数:
GWL_EXSTYLE
扩展窗口样式
GWL_STYLE
窗口样式
GWL_WNDPROC
该窗口的窗口函数的地址
GWL_HINSTANCE
拥有窗口的实例的句柄
GWL_HWNDPARENT
该窗口之父的句柄。不要用SetWindowWord来改变这个值
GWL_ID
对话框中一个子窗口的标识符
GWL_USERDATA
含义由应用程序规定
DWL_DLGPROC
这个窗口的对话框函数地址
DWL_MSGRESULT
在对话框函数中处理的一条消息返回的值
DWL_USER
含义由应用程序规定