窗口的BorderStyle设置成2-Sizable,在窗口中放一个按钮,点击后使标题栏消失,窗口全屏,怎么做?

解决方案 »

  1.   

    嘿嘿,这个有点麻烦,ControlBox这个是不能在程序中间修改的,VB确实有不少这样的属性。其实有个比较邪门的办法。首先看下叶帆写的这个窗体的:http://www.bjjr.com.cn/yefan/sourcecode/xpform.rar你分析下他的界面就知道,实际上他的标题部分是由image,label两个控件组成,实际上VB本身的ControlBox就是为false的。明白了吧。自己照着做个标题吧,点button的时候设置这些控件的属性为false就行了
      

  2.   

    设置left top属性,使标题栏在屏幕外面不就相当于标题栏没有了吗?
    窗口全屏,设置width height属性,只要够大,就可以了吧,
      

  3.   

    Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
    (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongPrivate Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
    (ByVal hwnd As Long, ByVal nIndex As Long) As LongPrivate Const GWL_STYLE = (-16)
    Private Const WS_CAPTION = &HC00000     ' WS_BORDER 或 WS_DLGFRAME
    Private Const WS_MAXIMIZEBOX = &H10000
    Private Const WS_MINIMIZEBOX = &H20000
    Private Const WS_SYSMENU = &H80000Private Declare Function SetWindowPos Lib "user32" _
    (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, _
    ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As LongPrivate Enum ESetWindowPosStyles
        SWP_SHOWWINDOW = &H40
        SWP_HIDEWINDOW = &H80
        SWP_FRAMECHANGED = &H20
        SWP_NOACTIVATE = &H10
        SWP_NOCOPYBITS = &H100
        SWP_NOMOVE = &H2
        SWP_NOOWNERZORDER = &H200
        SWP_NOREDRAW = &H8
        SWP_NOREPOSITION = SWP_NOOWNERZORDER
        SWP_NOSIZE = &H1
        SWP_NOZORDER = &H4
        SWP_DRAWFRAME = SWP_FRAMECHANGED
        HWND_NOTOPMOST = -2
    End EnumPrivate Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
    Private Type RECT
        Left As Long
        Top As Long
        Right As Long
        Bottom As Long
    End TypePrivate Sub Command1_Click()
        Dim lStyle As Long
        Dim tR As RECT
        
        GetWindowRect Me.hwnd, tR
        
        lStyle = GetWindowLong(Me.hwnd, GWL_STYLE)
        Me.Tag = Me.Caption
        Me.Caption = ""
        lStyle = lStyle And Not WS_SYSMENU
        lStyle = lStyle And Not WS_MAXIMIZEBOX
        lStyle = lStyle And Not WS_MINIMIZEBOX
        lStyle = lStyle And Not WS_CAPTION
        
        SetWindowLong Me.hwnd, GWL_STYLE, lStyle
        
        SetWindowPos Me.hwnd, 0, tR.Left, tR.Top, tR.Right - tR.Left, tR.Bottom - tR.Top, SWP_NOREPOSITION Or SWP_NOZORDER Or SWP_FRAMECHANGED
        Me.WindowState = 2
        Me.Refresh
    End Sub
      

  4.   

    上面这位老兄,我不知道你用过ActiveSkin4.3没有,你这个方法在VB里可以用,但是我加载
    了ActiveSkin4.3控件后,标题栏仍旧存在,没有什么效果啊,急!
      

  5.   

    ActiveSkin没用过,但用SetWindowLong后,标题栏仍在,那就说明那不是真正的标题栏,而是绘制的或用image,label仿冒的,要想随心所欲,只有自己做啦!
      

  6.   

    楼上说得有道理,你应该先看看ACTIVESKIN本身是否带有此效果