我怎么才能把form窗体右上角的x去掉,使用户无法这样关闭窗体?
解决方案 »
- 请教一下,写一个跟踪窗体大小发生变化的钩子函数
- VB中用HTTP请求数据,如果返回字符串中有中文,客户端接收到的就是乱码,如何解码?
- vb中如把SQL数据库调入EXCEL进行打印!!急!!!!!请大家指点
- 一个报表打印的错误提示?
- ActiveReports中,可不可以动态的引用它生成的*.rpx 对象
- 为什么 handle = CreateFile("COM1", GENERIC_READ Or GENERIC_WRITE, 0, s, OPEN_EXISTING, 0, 0)总是返回-1?
- 怎样判断数据表中某个字段有重复的值
- 请看kodak图像缩略图ImgThumbnail例子问题,高分等待,解决问题200分
- 如何正确设置OCX控件的安全性?
- 平常问题
- 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 为你窗体名