Option ExplicitPrivate 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 Const MF_BYPOSITION = &H400& Const MF_REMOVE = &H1000& Const SC_CLOSE = &HF060 Const SC_MINIMIZE = &HF020& Const SC_MAXIMIZE = &HF030Private Sub Form_Load() Dim hSysMenu As Long hSysMenu = GetSystemMenu(Me.hwnd, False) '使最大化按钮无效 RemoveMenu hSysMenu, SC_MAXIMIZE, MF_REMOVE '使最小化按钮无效 RemoveMenu hSysMenu, SC_MINIMIZE, MF_REMOVE '使关闭按钮无效,加上这局以后,别忘了自己实现退出 RemoveMenu hSysMenu, SC_CLOSE, MF_REMOVE End Sub
不用api的方法设置窗体的属性MaxButton和MiniButton为false 在form里添加一个command -------form--------- Option ExplicitDim surequit As BooleanPrivate Sub Command1_Click() surequit = True End SubPrivate Sub Form_Unload(Cancel As Integer) If surequit = False Then Cancel = 1 End Sub
如果你不想用无边窗品可以调用API 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 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 SubPrivate Sub Form_Load() Call DisableX(Me) End Sub 试一下这种效果是不是你想要的!
1.设置窗体的属性MaxButton和MiniButton为false
2.通过截取窗体的消息,屏蔽最大化、最小化。
Form1.ControlBox 的值设为 False注意:该属性为只读
Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Const MF_BYPOSITION = &H400&
Const MF_REMOVE = &H1000&
Const SC_CLOSE = &HF060
Const SC_MINIMIZE = &HF020&
Const SC_MAXIMIZE = &HF030Private Sub Form_Load()
Dim hSysMenu As Long
hSysMenu = GetSystemMenu(Me.hwnd, False)
'使最大化按钮无效
RemoveMenu hSysMenu, SC_MAXIMIZE, MF_REMOVE
'使最小化按钮无效
RemoveMenu hSysMenu, SC_MINIMIZE, MF_REMOVE
'使关闭按钮无效,加上这局以后,别忘了自己实现退出
RemoveMenu hSysMenu, SC_CLOSE, MF_REMOVE
End Sub
在form里添加一个command
-------form---------
Option ExplicitDim surequit As BooleanPrivate Sub Command1_Click()
surequit = True
End SubPrivate Sub Form_Unload(Cancel As Integer)
If surequit = False Then Cancel = 1
End Sub
第一个方法我已试过,maxbotton 和 minbotton 均有效,但没有去掉退出按钮,其它方法还未试,试过之后即结贴,散分。谢谢
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 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 SubPrivate Sub Form_Load()
Call DisableX(Me)
End Sub
试一下这种效果是不是你想要的!
返回或设置对象的边框样式。对 Form 对象和 Textbox 控件在运行时是只读的。语法object.BorderStyle = [value]BorderStyle 属性语法有这些组成部分:部分 描述
object 对象表达式,其值是“应用于”列表中的一个对象。
value 值或常数,用于决定边框样式,“设置值”中有详细说明。
设置值Form 对象的 BorderStyle 属性设置值如下:常数 设置值 描述
vbBSNone 0 无(没有边框或与边框相关的元素)。
vbFixedSingle 1 固定单边框。可以包含控制菜单框,标题栏,“最大化”按钮,和“最小化”按钮。只有使用最大化和最小化按钮才能改变大小。
vbSizable 2 (缺省值)可调整的边框。可以使用设置值1列出的任何可选边框元素重新改变尺寸。
vbFixedDouble 3 固定对话框。可以包含控制菜单框和标题栏,不能包含最大化和最小化按钮,不能改变尺寸。
vbFixedToolWindow 4 固定工具窗口。不能改变尺寸。显示关闭按钮并用缩小的字体显示标题栏。窗体在 Windows 95 的任务条中不显示。
vbSizableToolWindow 5 可变尺寸工具窗口。可变大小。显示关闭按钮并用缩小的字体显示标题栏。窗体在 Windows 95 的任务条中不显示。
MS Flex Grid、Image、Label、OLE 容器、PictureBox、Frame 和 TextBox 控件的 BorderStyle 属性设置值如下:设置值 描述
0 (Image 和 Label 控件的缺省值)无。
1 (MS Flex Grid、PictureBox、TextBox 和 OLE 容器控件的缺省值)固定单边框。
Line 和 Shape 控件的 BorderStyle 属性设置值如下:常数 设置值 描述
vbTransparent 0 透明
vbBSSolid 1 (缺省值)实线。边框处于形状边缘的中心。
vbBSDash 2 虚线
vbBSDot 3 点线
vbBSDashDot 4 点划线
vbBSDashDotDot 5 双点划线
vbBSInsideSolid 6 内收实线。边框的外边界就是形状的外边缘。
说明对于窗体,BorderStyle 属性决定了其主要特征,这些特征从外观上就能确定窗体是通用窗口或对话框。设置值 3(固定对话框)用于标准对话框。设置值 4(固定工具窗口)和 5(可变工具窗口)用于创建工具箱样式的窗口。设置值为 2(可变尺寸)的 MDI 子窗体,以 Windows 运行环境运行时定义的缺省尺寸,在 MDI 窗体内显示。对于任何其它设置值,窗体按设计时指定的大小显示。改变 Form 对象的 BorderStyle 属性设置值,可能会改变 MinButton、MaxButton 和 ShowInTaskbar 属性的设置值。当 BorderStyle 设置为 1(固定单边框)或 2(可变尺寸)时,MinButton、MaxButton 和 ShowInTaskbar 属性自动设置为 True。当 BorderStyle 设置为 0(无)、3(固定对话框)、4(固定工具窗口)或 5(可变工具窗口)、MinButton、MaxButton 和 ShowInTaskbar 属性自动设置为 False。注意 如果带有菜单的窗体设置为 3(固定对话框),该窗体将按设置值 1(固定单边框)显示。运行时,窗体或者是模式的或者是无模式的,都可以用 Show 方法指定
Cancel = -1
End Sub