我刚学VB,很菜。在做软件时为了美观,想把没用的最大化按钮移除,只保留最小化和关闭按钮。我现在目前只实现了最大化按钮失效,不能鼠标拖动改变大小。有知道的朋友告诉一声哈!越详细越好。在此先谢了哈!

解决方案 »

  1.   

    设置borderstyle为FixedDialog,这样貌似只有关闭按钮,没有最小化哈!我要的是保留最小化和关闭按钮,而且不能通过鼠标拖动来改变大小。
      

  2.   

    UPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUP
      

  3.   

    不可能没有max按钮。只能让这个按钮失效。
    方法是让minbutton=true
      

  4.   

    你见过哪个软件没有最大化按钮,只有关闭和最小化么?没有吧。你可以用getsystemmenu获取系统菜单,然后deletemenu删除之。
      

  5.   

    第一步:设置窗体borderstyle=fixedsingle (1)
    第二步:设置 minButton=true
      

  6.   

    同时去掉最大化、最小化按钮是可以的:
    Dim lWnd As Long
    lWnd = GetWindowLong(Me.hwnd, GWL_STYLE)
    lWnd = lWnd And Not WS_MINIMIZEBOX'改成lWnd = lWnd And WS_MINIMIZEBOX不行的
    lWnd = lWnd And Not WS_MAXIMIZEBOX
    lWnd = SetWindowLong(Me.hwnd, GWL_STYLE, lWnd)但不能只去掉最大化按钮,只能让它失效。
      

  7.   

    窗体的borderstyle的值设为1
    窗体的minbutton设为true
    这样就可以了1
      

  8.   

    '======================模块=============================='
    Option Explicit
    '第一种方法
    Declare Function GetSystemMenu Lib "User32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
    Declare Function DeleteMenu Lib "User32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
    Declare Function GetMenuItemCount Lib "User32" (ByVal hMenu As Long) As Long
    Public Const MF_BYPOSITION = &H400&'第二种方法
    'Declare Function GetSystemMenu Lib "User32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
    Declare Function RemoveMenu Lib "User32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
    Declare Function DrawMenuBar Lib "User32" (ByVal hwnd As Long) As Long
    'Declare Function GetMenuItemCount Lib "User32" (ByVal hMenu As Long) As Long
    'Public Const MF_BYPOSITION = &H400&
    Public Const MF_DISABLED = &H2&'第一种方法
    Public 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 Sub Form_Load()
    '第一种方法
        Dim hwndMenu As Long
        Dim c As Long
        hwndMenu = GetSystemMenu(Me.hwnd, 0)
        
        c = GetMenuItemCount(hwndMenu)
        
        DeleteMenu hwndMenu, c - 1, MF_BYPOSITION
        
        c = GetMenuItemCount(hwndMenu)
        DeleteMenu hwndMenu, c - 1, MF_BYPOSITION
        
    '第二种方法
        'Call DisableX(Me)
    End Sub
      

  9.   


    为什么要偏要说“改成lWnd = lWnd And WS_MINIMIZEBOX不行的
    明明是去掉这句lWnd = lWnd And Not WS_MINIMIZEBOX就OK的简单问题,为何复杂化,误人子弟!