在VB中,如何固定窗体大小,使窗体右上角的最大化,最小化,退出按键失效
请各位大虾指点谢谢!

解决方案 »

  1.   

    有两种方法:
    1.设置窗体的属性MaxButton和MiniButton为false
    2.通过截取窗体的消息,屏蔽最大化、最小化。
      

  2.   

    Form1.BorderStyle = 3 '1也可以
    Form1.ControlBox 的值设为 False注意:该属性为只读
      

  3.   

    将窗体的BorderStyle 属性设定为3ControlBox 属性都设定为false窗体上就没有最大化,最小化和关闭按钮了
      

  4.   

    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
      

  5.   

    不用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
      

  6.   

    谢谢各位关照
    第一个方法我已试过,maxbotton 和 minbotton 均有效,但没有去掉退出按钮,其它方法还未试,试过之后即结贴,散分。谢谢
      

  7.   

    将窗体属性borderstytle设为0(none),这样就可以去掉最大化,最小化,关闭按钮
      

  8.   

    如果你不想用无边窗品可以调用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
    试一下这种效果是不是你想要的!
      

  9.   

    BorderStyle 属性
          返回或设置对象的边框样式。对 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 方法指定
      

  10.   

    Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    Cancel = -1
    End Sub