Can I have a user form with no Header/Caption Bar ?

I

Ivan F Moala

Juts be aware that without the Caption (removes the Menu controls) yo
will not be able to move the Userform. Post back if you need code t
move it
 
R

RandyDtg1

I'm trying, but I'm not sure which code I need or don't need. I suspect it is
just a few lines. Any help on which, if I just want a form with no
caption/header bar?

I plan to use mouse move to close box.
Or is there a better way to put a short user message up, with out using msgbox,
more like a splash screen.
 
I

Ivan F Moala

This should do it.

Option Explicit

Private Declare Function GetWindowRect Lib "User32" ( _
ByVal hWnd As Long, _
lpRect As RECT) As Long

Private Declare Function FindWindow Lib "User32" _
Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long

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


'// Used for moving Captionless form
Private 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 Long

Private Const GWL_STYLE = (-16)
Private Const WS_CAPTION = &HC00000 ' WS_BORDER O
WS_DLGFRAME
Private Const WS_SYSMENU = &H80000

Private Const SWP_FRAMECHANGED = &H20 ' The frame changed: sen
WM_NCCALCSIZE
Private Const SWP_NOOWNERZORDER = &H200 ' Don't do owner Z ordering
Private Const SWP_NOREDRAW = &H8
Private Const SWP_NOREPOSITION = SWP_NOOWNERZORDER
Private Const SWP_NOSIZE = &H1
Private Const SWP_NOZORDER = &H4

Private Type POINTAPI
X As Long
Y As Long
End Type

Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type



Private Sub UserForm_Activate()
Dim lStyle As Long
Dim tR As RECT
Dim FrmWndh As Long

'// Get Forms window handle set Variable NOW!
FrmWndh = FindWindow(vbNullString, Me.Caption)

'// Get the window's position:
GetWindowRect FrmWndh, tR

'// Modify whether title bar will be visible:
lStyle = GetWindowLong(FrmWndh, GWL_STYLE)
lStyle = lStyle And Not WS_SYSMENU
lStyle = lStyle And Not WS_CAPTION

SetWindowLong FrmWndh, GWL_STYLE, lStyle

'// Ensure the style takes and make the window the
'// same size, regardless that the title bar
'// is now a different size:
SetWindowPos FrmWndh, 0, tR.Left, tR.Top, tR.Right - tR.Left, tR.Botto
- tR.Top, _
SWP_NOREPOSITION Or SWP_NOZORDER Or SWP_FRAMECHANGED
Me.Repaint

End Su
 
Top