以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  自定义菜单,如何禁止直接关闭?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=79314)

--  作者:erdbeer
--  发布时间:2015/12/28 22:46:00
--  自定义菜单,如何禁止直接关闭?


图片点击可在新窗口打开查看此主题相关图片如下:qq图片20151228224305.png
图片点击可在新窗口打开查看

 

 

如何让自定义的菜单右上角的 X (关闭)失效 ?


--  作者:大红袍
--  发布时间:2015/12/28 22:59:00
--  

beforeCloseProject事件

 

e.cancel =  not vars("允许关闭")

 

如果要关闭,就赋值再关闭

 

vars("允许关闭") = true


--  作者:大红袍
--  发布时间:2015/12/28 23:06:00
--  

mark 禁用关闭按钮

 

全局代码

 

Public Const SC_CLOSE As Integer = &Hf060
Public Const MF_ENABLED As Integer = &H0
Public Const MF_GRAYED As Integer = &H1
Public Const MF_DISABLED As Integer = &H2

<DllImport("user32.dll", EntryPoint := "GetSystemMenu")> _
Public Function GetSystemMenu(hWnd As IntPtr, bRevert As Integer) As IntPtr
End Function

<DllImport("User32.dll")> _
Public Function EnableMenuItem(hMenu As IntPtr, uIDEnableItem As Integer, uEnable As Integer) As Boolean
End Function

 

调用代码

 

Dim hMenu As IntPtr = GetSystemMenu(basemainform.Handle, 0)
EnableMenuItem(hMenu, SC_CLOSE, (MF_DISABLED + MF_GRAYED) Or MF_ENABLED)