Public Class Form1
    Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
    Private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long
    Const GWL_STYLE = (-16)
    Const WS_SYSMENU = &H80000    Private Sub RemoveSysButton(ByVal hHwnd As Long)
        Dim lWnd As Long
        lWnd = GetWindowLong(hHwnd, GWL_STYLE)
        lWnd = lWnd And Not (WS_SYSMENU)
        lWnd = SetWindowLong(hHwnd, GWL_STYLE, lWnd)
        DrawMenuBar(hHwnd)
    End Sub    Private Sub Form1_Load()
        RemoveSysButton(me.hHwnd)
    End Sub
End Class
这是我在网上找的代码,但是总是出错,说:hHwnd is not a member of form1
请问下是怎么回事。
另外我用的是VB 2005 Express Edition.

解决方案 »

  1.   

    看看这个实例吧,里面有如何禁用关闭按钮的方法:
    http://download.csdn.net/source/565913
      

  2.   

    RemoveSysButton(me.Hwnd) 的问题还是‘Hwnd’ is not a member of "form1"
      

  3.   

    在窗体的属性中有个ControlBox,将其设置为false,就会去掉关闭按钮!
      

  4.   

    难道VB2005里的form没有句柄?
    对了,在VB6里,这里:
     Private Sub Form1_Load() 
            RemoveSysButton(me.hHwnd) 
        End Sub 应是:
     Private Sub Form_Load() 
            RemoveSysButton(me.Hwnd) 
     End Sub 
      

  5.   

    如果controlbox=false的话,最大化最小化也不见了。
    难道网上的代码都是给vb6用的
    vb2005都不行。
    RemoveSysButton(me.hHwnd) 
    RemoveSysButton(me.Hwnd) 
    两句都是,is not a member of form1
      

  6.   

    RemoveSysButton(me.Hwnd)hwnd 是句柄 hHwnd啥都不是...当然不行了
      

  7.   

    Private Sub RemoveSysButton(ByVal hHwnd As Long) 
            Dim lWnd As Long 
            lWnd = GetWindowLong(hHwnd, GWL_STYLE) 
            lWnd = lWnd And Not (WS_SYSMENU) 
            lWnd = SetWindowLong(hHwnd, GWL_STYLE, lWnd) 
            DrawMenuBar(hHwnd
        End Sub     Private Sub Form1_Load() 
            RemoveSysButton(me.hHwnd
        End Sub 标为红色和有下划线的地方统统改成HWND...应该就OK了... 如果还不行,那就说明你AV看少了,不够淫荡
      

  8.   

    对了,还有Private Sub RemoveSysButton(ByVal hHwnd As Long) 
    这里这个
      

  9.   

    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 Const MF_BYPOSITION = &H400&
      Private Const MF_REMOVE = &H1000&
      Private Const SC_CLOSE = &HF060&
        
      Private Sub Form_Load()
              RemoveMenu GetSystemMenu(Me.hwnd, 0), SC_CLOSE, MF_REMOVE
      End Sub
    网上找的,这个正点... 居然是直接把默认的菜单里的"关闭"菜单项目给移除了... REMOVEMENU 这个东东早点让我发现以前就不至于画那个东西那么辛苦 了
      

  10.   

    奇怪了,难道vb2005里面没有form.hwnd这个member.还是不可以。
    有没有vb2005能用的亚。