用 GetWindowLong 函数和SetWindowLong:添加一个模块,把窗体的BorderStyle属性设置1,然后复制一下代码,就可以实现你所要求的效果了Public Declare Function GetWindowLong Lib "user32" Alias _ "GetWindowLongA" (ByVal hwnd As Long, _ ByVal nIndex As Long) As Long Public Declare Function SetWindowLong Lib "user32" Alias _ "SetWindowLongA" (ByVal hwnd As Long, _ ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Public 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 Const GWL_STYLE = (-16) Private Const WS_CAPTION = &HC00000 Private Const SWP_FRAMECHANGED = &H20 Private Const SWP_NOMOVE = &H2 Private Const SWP_NOZORDER = &H4 Private Const SWP_NOSIZE = &H1Public Sub ToggleTitleBar(f As Form, ShowTitle As Boolean) Dim style As Long style = GetWindowLong(f.hwnd, GWL_STYLE) If ShowTitle Then style = style Or WS_CAPTION Else style = style And Not WS_CAPTION End If SetWindowLong f.hwnd, GWL_STYLE, style SetWindowPos f.hwnd, 0, 0, 0, 0, 0, SWP_FRAMECHANGED Or SWP_NOMOVE Or SWP_NOZORDER Or SWP_NOSIZE End Sub'在窗体form1的load事件中 Private Sub Form_Load() ToggleTitleBar Me, False End Sub
或者用 rainstormmaster(暴风雨 v2.0) 大哥的方法:Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long Private Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As LongPrivate Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long Const SM_CYCAPTION = 4 Private Sub Form_Load() Dim rgn As Long, capHeight As Long capHeight = GetSystemMetrics(SM_CYCAPTION) + 3 Me.ScaleMode = 3 rgn = CreateRectRgn(3, capHeight, Me.ScaleWidth, Me.ScaleHeight + capHeight) SetWindowRgn Me.hWnd, rgn, True End Sub
"GetWindowLongA" (ByVal hwnd As Long, _
ByVal nIndex As Long) As Long
Public Declare Function SetWindowLong Lib "user32" Alias _
"SetWindowLongA" (ByVal hwnd As Long, _
ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public 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 Const GWL_STYLE = (-16)
Private Const WS_CAPTION = &HC00000
Private Const SWP_FRAMECHANGED = &H20
Private Const SWP_NOMOVE = &H2
Private Const SWP_NOZORDER = &H4
Private Const SWP_NOSIZE = &H1Public Sub ToggleTitleBar(f As Form, ShowTitle As Boolean)
Dim style As Long
style = GetWindowLong(f.hwnd, GWL_STYLE)
If ShowTitle Then
style = style Or WS_CAPTION
Else
style = style And Not WS_CAPTION
End If
SetWindowLong f.hwnd, GWL_STYLE, style
SetWindowPos f.hwnd, 0, 0, 0, 0, 0, SWP_FRAMECHANGED Or SWP_NOMOVE Or SWP_NOZORDER Or SWP_NOSIZE
End Sub'在窗体form1的load事件中
Private Sub Form_Load()
ToggleTitleBar Me, False
End Sub
Private Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As LongPrivate Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
Const SM_CYCAPTION = 4 Private Sub Form_Load()
Dim rgn As Long, capHeight As Long
capHeight = GetSystemMetrics(SM_CYCAPTION) + 3
Me.ScaleMode = 3
rgn = CreateRectRgn(3, capHeight, Me.ScaleWidth, Me.ScaleHeight + capHeight)
SetWindowRgn Me.hWnd, rgn, True
End Sub