这是使关闭按钮失效的代码
Option Explicit
Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Const MF_REMOVE = &H1000&
Private Const SC_CLOSE = &HF060&Private Sub Form_Load()
RemoveMenu GetSystemMenu(Me.hwnd, False), SC_CLOSE, MF_REMOVE
End Sub
现在在显示窗体时怎样才能是关闭按钮生效(小弟的程序根据不同的条件显示窗体时,有时需要关闭按钮,有时禁止关闭按钮)
Option Explicit
Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Const MF_REMOVE = &H1000&
Private Const SC_CLOSE = &HF060&Private Sub Form_Load()
RemoveMenu GetSystemMenu(Me.hwnd, False), SC_CLOSE, MF_REMOVE
End Sub
现在在显示窗体时怎样才能是关闭按钮生效(小弟的程序根据不同的条件显示窗体时,有时需要关闭按钮,有时禁止关闭按钮)
if blnClose=false then
Cancel = 1
MsgBox "现在你不可以关闭窗体!"
end if
End Sub
http://www.china-askpro.com/msg6/qa80.shtml
Declare Function AppendMenu Lib "user32" Alias "AppendMenuA" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As Any) As Long
说明
在指定的菜单里添加一个菜单项
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
hMenu Long,菜单句柄
wFlags Long,参考ModifyMenu函数中的菜单常数标志定义表,其中列出了允许使用的所有常数
wIDNewItem Long,指定菜单条目的新命令ID。如果在wFlags参数中指定了MF_POPUP字段,那么这应该是指向一个弹出式菜单的句柄
lpNewItem String(相应的vb声明见注解),如果在wFlags参数中指定了MF_STRING标志,这就代表在菜单中设置的字串。如设置了MF_BITMAP标志,这就代表一个Long型变量,其中包含了一个位图句柄。如设置了MF_OWNERDRAW,这个值就会包括在DRAWITEMSTRUCT和MEASUREITEMSTRUCT结构中,在条目需要重画的时候由windows发送出去
注解
Declare Function AppendMenu& Lib "user32" Alias "AppendMenuA" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As String)
不知是不是
VB6中,就可以呀。我试了一下,可。
Private Sub Form_Unload(Cancel As Integer)
Cancel = 1
MsgBox "现在你不可以关闭窗体!"
End Sub
or
exit sub
小弟的程序主要是有时不让产生form_unload事件,如果产生了此事件,下次显示这个窗体时就会产生form_load事件,这样就会重新初始化窗体,这是不允许的(因为在show这个窗体时,要保留上次hide之前的结果)
Private Sub Form_Unload(Cancel As Integer)
Cancel = True
Me.Hide
End Sub