我怎么才能把form窗体右上角的x去掉,使用户无法这样关闭窗体?
解决方案 »
- 怎樣根據條件,自動發送Mail/Note
- 请问,如何在判断label1的右键单击动作,然后再弹出已经做好的菜单!
- 上次没有说清楚.vb的form窗体为什么在最小化后再打开,或者开了别的程序窗口后,窗体上就变成空的了?
- 请问,如何检测局域网中某台计算机是否已连通?
- 很低级的打印平台,为你的打印提供接口
- 100分求教,ActivateReport2.0(ARviewer)的问题!
- 帮帮可怜的小菜鸟
- [求助][求助]会VB的请进,‘无效图片’??
- 传统的老问题:屏幕截图(连鼠标也一起截下来)、bmp->jpg或者gif
- 神,再救我一次吧!
- mid中的子窗体,如何能讓他在加載后的位置如top在mdi客戶區外?
- 非常急!!!在线等!!!
另一种方法:
http://www.csdn.net/develop/read_article.asp?id=18774
Private Declare Function RemoveMenu Lib "User32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Declare Function DrawMenuBar Lib "User32" (ByVal hwnd As Long) As Long
Private Declare Function GetMenuItemCount Lib "User32" (ByVal hMenu As Long) As Long
Private Const MF_BYPOSITION = &H400&
Private Const MF_DISABLED = &H2& Private Sub DisableX(Frm As Form)
Dim hMenu As Long, nCount As Long
hMenu = GetSystemMenu(Frm.hwnd, 0)
nCount = GetMenuItemCount(hMenu)
Call RemoveMenu(hMenu, nCount - 1, MF_DISABLED Or MF_BYPOSITION)
DrawMenuBar Frm.hwnd
End Sub
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 Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long
Private Const MF_BYPOSITION = &H400&
Private Const MF_DISABLED = &H2&Private Sub Form_Load()
Call DisableX(Me)
End SubPrivate Sub DisableX(frm As Form)
Dim mMenu As Long
Dim nCount As Long
mMenu = GetSystemMenu(frm.hwnd, 0)
nCount = GetMenuItemCount(mMenu)
Call RemoveMenu(mMenu, nCount - 1, MF_DISABLED Or MF_BYPOSITION)
DrawMenuBar frm.hwnd
End Sub
Private Declare Function RemoveMenu Lib "User32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Declare Function DrawMenuBar Lib "User32" (ByVal hwnd As Long) As Long
Private Declare Function GetMenuItemCount Lib "User32" (ByVal hMenu As Long) As Long
Private Const MF_BYPOSITION = &H400&
Private Const MF_DISABLED = &H2& Public Sub RemoveX(hwnd As Long)
Dim hMenu As Long
Dim menuItemCount As Long hMenu = GetSystemMenu(hwnd, 0) If hMenu Then
menuItemCount = GetMenuItemCount(hMenu) RemoveMenu hMenu, menuItemCount - 1, MF_REMOVE Or MF_BYPOSITION
RemoveMenu hMenu, menuItemCount - 2, MF_REMOVE Or MF_BYPOSITION DrawMenuBar hwnd
End If
End Sub
RemoveX Me.hwnd
然后自己做from的窗口标题。 ;)很多xp风格的窗体就是这样创建的。
Private Declare Function GetSystemMenu Lib "user32" (ByVal hWnd As Long, _
ByVal bRevert As Long) As LongPrivate Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, _
ByVal nPosition As Long, ByVal wFlags As Long) As LongPrivate Const MF_REMOVE = &H1000&
Private Const SC_COLSE = &HF060
Private Const SC_MAXIMIZE = &HF030
Private Const SC_MINIMIZE = &HF020
Private Sub Form_Load()
' 关闭、最大化、最小化按钮不可用
RemoveMenu GetSystemMenu(abc.hWnd, 0), SC_COLSE, MF_REMOVE
'RemoveMenu GetSystemMenu(abc.hWnd, 0), SC_MAXIMIZE, MF_REMOVE
'RemoveMenu GetSystemMenu(abc.hWnd, 0), SC_MINIMIZE, MF_REMOVE
'ABC 为你窗体名